追加のクラスなしでも動作します:
var myDictionary = conn.Query<string, int, KeyValuePair<string,int>>(sql, (s,i) => new KeyValuePair<string, int>(s,i))
.ToDictionary(kv => kv.Key, kv => kv.Value);
注: Dapper.NET 3.5 バージョンを使用する場合、.NET 4.0 および .NET 4.5 バージョンはオプションの引数を利用するため、1 番目、2 番目、および戻り値の型を取る Query メソッドでは、より多くのパラメーターを指定する必要があります。
この場合、次のコードが機能するはずです。
string splitOn = "TheNameOfTheValueColumn";
var myDictionary = conn.Query<string, int, KeyValuePair<string,int>>(sql, (s,i) => new KeyValuePair<string, int>(s,i), null, null, false, splitOn, null, null)
.ToDictionary(kv => kv.Key, kv => kv.Value);
ほとんどの引数はデフォルトに戻りますが、splitOn
それ以外の場合は「id」の値にデフォルト設定されるため、必須です。
' ID ' と '説明'の 2 つの列を返すクエリの場合、'説明splitOn
'に設定する必要があります。