辞書を変換する方法辞書へ Colllection.ToDictionary()を使用して

c# c#-4.0 dapper expando expandoobject

質問

Dapperを使用して2列の結果セットを辞書にフェッチしています。 intellisenseが私に結果セットの上にカーソルを置いたときに.ToDictionary()が表示されているのに気付きましたが、dapperが動的プロパティ/ expandoObjectを使用しているため、

Dictionary<string, string > rowsFromTableDict = new Dictionary<string, string>();
using (var connection = new SqlConnection(ConnectionString))
{
   connection.Open();
   var results =  connection.Query
                  ("SELECT col1 AS StudentID, col2 AS Studentname 
                    FROM Student order by StudentID");
    if (results != null)
    {
    //how to eliminate below foreach using results.ToDictionary()
    //Note that this is results<dynamic, dynamic>
         foreach (var row in results)
         {
              rowsFromTableDict.Add(row.StudentID, row.StudentName);
         }
         return rowsFromTableDict;
     }
}

ありがとうございました

受け入れられた回答

試してください:

results.ToDictionary(row => (string)row.StudentID, row => (string)row.StudentName);

いったん動的オブジェクトを取得すると、そのオブジェクトとそれに対応するプロパティおよびメソッドは、すべて動的タイプになります。動的ではないタイプに戻すためには、明示的なキャストを定義する必要があります。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow