comment convertir dictionnaire <dynamic, dynamic> au dictionnaire <string, string> en utilisant Colllection.ToDictionary ()

c# c#-4.0 dapper expando expandoobject

Question

J'utilise Dapper pour récupérer un jeu de résultats de 2 colonnes dans un dictionnaire. J'ai remarqué qu'intelliisense me montre un .ToDictionary () lorsque je survole le jeu de résultats mais que je ne peux pas le faire fonctionner car dapper utilise des propriétés dynamiques / 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;
     }
}

Je vous remercie

Réponse acceptée

Essayer:

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

Une fois que vous avez un objet dynamique, tout ce que vous en faites et les propriétés et méthodes correspondantes sont du type dynamique. Vous devez définir un transtypage explicite pour le remettre dans un type non dynamique.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi