Pregunta

Estoy usando Dapper para obtener un resultado de resultados de 2 columnas en un diccionario. Noté que IntelliSense me muestra un .todicionary () cuando me desplazé sobre el conjunto de resultados, pero no puedo hacer que funcione ya que 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

¿Fue útil?

Solución

Probar:

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. Debe definir un elenco explícito para que vuelva a colocarlo en un tipo que no sea dinámico.

Otros consejos

if (results != null)
{
    return results.ToDictionary(x => x.StudentID, x => x.StudentName);     
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top