Comment convertir correctement deux colonnes de SQL (2008) en utilisant Linq en un dictionnaire (pour la mise en cache)?
Je boucle actuellement à travers le b/c IQueryable Je ne peux pas faire fonctionner la méthode ToDictionary. Des idées? Cela marche:
var query = from p in db.Table
select p;
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (var p in query)
{
dic.Add(sub.Key, sub.Value);
}
Ce que j'aimerais vraiment faire, c'est quelque chose comme ça, qui ne semble pas fonctionner:
var dic = (from p in db.Table
select new {p.Key, p.Value })
.ToDictionary<string, string>(p => p.Key);
Mais j'obtiens cette erreur: impossible de convertir de 'System.Linq.IQueryable' en 'System.Collections.Generic.IEnumerable'
var dictionary = db
.Table
.Select(p => new { p.Key, p.Value })
.AsEnumerable()
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value)
;
Vous définissez uniquement la clé, mais vous devez également inclure la valeur:
var dic = (from p in db.Table
select new {p.Key, p.Value })
.ToDictionary(p => p.Key, p=> p.Value);
Merci les gars, vos réponses m'ont aidé à résoudre ce problème, devrait être:
var dic = db
.Table
.Select(p => new { p.Key, p.Value })
.AsEnumerable()
.ToDictionary(k=> k.Key, v => v.Value);
Pourquoi voudriez-vous créer un objet anonyme pour chaque élément du tableau juste pour le convertir?
Vous pouvez simplement utiliser quelque chose comme: IDictionary<string, string> dic = db.Table.ToDictionary(row => row.Key, row => row.Value);
Vous devrez peut-être inclure un appel AsEnumerable () entre Table et ToDictionary (). Je ne connais pas le type exact de db.Table.
Corrigez également le premier exemple, votre deuxième variable de boucle ne correspond pas à la déclaration et à l'utilisation.