Cómo convertir el diccionario a Dictionary usando colllection.todicionary ()
-
27-10-2019 - |
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
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