Linqクエリ結果を辞書に変換する 質問する

Linqクエリ結果を辞書に変換する 質問する

Linq to SQL を使用してデータベースにいくつかの行を追加したいのですが、行を追加する前に「カスタム チェック」を実行して、入力行を追加、置換、または無視する必要があるかどうかを確認したいと考えています。クライアントと DB サーバー間のトラフィックをできるだけ低く抑え、クエリの数を最小限に抑えたいと思います。

これを実現するには、検証に必要な最小限の情報だけを、プロセスの開始時に 1 回だけ取得します。

このようなことをやろうと思っていましたが、明らかにうまくいきません。誰かアイデアはありますか?

Dictionary<int, DateTime> existingItems = 
    (from ObjType ot in TableObj
        select (new KeyValuePair<int, DateTime>(ot.Key, ot.TimeStamp))
    )

最後に欲しいのは、TableObject から ObjectType オブジェクト全体をダウンロードせずに、辞書を作成することです。

次のコードも検討しましたが、適切な方法を見つけようとしていました。

List<int> keys = (from ObjType ot in TableObj orderby ot.Key select ot.Key).ToList<int>();
List<DateTime> values = (from ObjType ot in TableObj orderby ot.Key select ot.Value).ToList<int>();
Dictionary<int, DateTime> existingItems = new Dictionary<int, DateTime>(keys.Count);
for (int i = 0; i < keys.Count; i++)
{
    existingItems.Add(keys[i], values[i]);
}

ベストアンサー1

使ってみる方法ToDictionaryそのようです:

var dict = TableObj.Select( t => new { t.Key, t.TimeStamp } )
                   .ToDictionary( t => t.Key, t => t.TimeStamp );

おすすめ記事