- PR -

DataTableのカラムがPKかどうか判定

1
投稿者投稿内容
ぽよぽよ
会議室デビュー日: 2007/02/07
投稿数: 9
投稿日時: 2007-03-12 16:18
お世話になります。

SQLServerから取得したデータで
DataTableのカラムがPK(PrimaryKey)かどうかを判定したいのですが、
DataTable.PrimaryKeyを使わずにカラム単体で取得したいのです。

DataTable.Colums[0].Unique

これでうまくいかず困ってます。
そもそも取得できるかどうかもわからないので、
それも含めてご教授願います。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-03-12 16:41
DataColumn.Unique は、列の内容が一意であるかどうかを示すプロパ
ティなので、プライマリキーとは関係ありません。

「カラム単体で」の意味がよくわかりませんが、どちらにしても
PrimaryKey プロパティから導き出すしかないと思います。

コード:

    foreach (DataColumn col in dt.PrimaryKey)
    {
        if (col == dt.Columns[0])
        {
            Console.WriteLine("あった");
            break;
        }
    }


こんな感じで。
他には、先にプライマリキーをリストとして持っておいて、Conains メソッド
を使うという手もあります。
環境が書いていないのでC# 2.0で作りました)

コード:

    List<DataColumn> pkList = new List<DataColumn>();
    pkList.AddRange(dt.PrimaryKey);

    // 実際に使うとき(ループの中とか)
    if (pkList.Contains(dt.Columns[0]) == true)
    {
        Console.WriteLine("こっちにもあった");
    }


_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
ぽよぽよ
会議室デビュー日: 2007/02/07
投稿数: 9
投稿日時: 2007-03-12 17:15
ぽぴ王子さん
ありがとうございます。

勉強不足のために変な想像してしまい、おかしな質問になった気がします。
ご返答どおりPrimaryKeyプロパティから取得します。
ですが、下記は参考になりました。

引用:

他には、先にプライマリキーをリストとして持っておいて、Conains メソッド
を使うという手もあります。



説明不足の質問にもかかわらず
ご丁寧にありがとうございました。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2007-03-12 20:18
NAL-6295です。

PrimaryKeyはSystem.Array型なので、Listに入れなくても
コード:
        if (System.Array.LastIndexOf(dt.PrimaryKey, dt.Columns[0]) >= 0)
        {
            Console.Write("あった");
        }




でもいけます。
別解と言うことで。
1

スキルアップ/キャリアアップ(JOB@IT)