cómo convertir el diccionario para Diccionario usando Colllection.ToDictionary ()

c# c#-4.0 dapper expando expandoobject

Pregunta

Estoy usando Dapper para buscar un conjunto de resultados de 2 columnas en un diccionario. Me di cuenta de que intellisense me muestra un .ToDictionary () cuando me desplazo sobre el conjunto de resultados, pero no puedo hacer que funcione porque dapper usa propiedades dinámicas / 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;
     }
}

gracias

Respuesta aceptada

Tratar:

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

Una vez que tiene un objeto dinámico, todo lo que hace con él y las propiedades y métodos correspondientes son del tipo dinámico. Necesita definir un molde explícito para volverlo a un tipo que no sea dinámico.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow