如何轉換字典到字典使用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
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因