1. ホーム
  2. c#

[解決済み] Linq-to-SQL ToDictionary()

2023-07-07 09:03:06

質問

Linq を使用して SQL (2008) から 2 つの列を (キャッシュ用に) ディクショナリに適切に変換するにはどうすればよいですか?

私は現在、IQueryableをループしています/私はToDictionaryメソッドを動作させることができません。何かアイデアはありますか? これは動作します。

var query = from p in db.Table
            select p;

Dictionary<string, string> dic = new Dictionary<string, string>();

foreach (var p in query)
{
    dic.Add(sub.Key, sub.Value);
}

本当にやりたいことは、こんな感じで、うまくいかないようです。

var dic = (from p in db.Table
             select new {p.Key, p.Value })
            .ToDictionary<string, string>(p => p.Key);

しかし、こんなエラーが出ます。 System.Linq.IQueryable' から 'System.Collections.Generic.IEnumerable' への変換ができません。

どのように解決するのですか?

var dictionary = db
    .Table
    .Select(p => new { p.Key, p.Value })
    .AsEnumerable()
    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value)
;