Linq to entities clause Select avec lambda
Je suis en train de travailler sur un nouveau projet et nous sommes à l'aide de Entity Framework et le dev de plomb souhaitez utiliser lambda requêtes chaque fois que possible. Une chose que nous allons avoir un moment difficile de déterminer est de savoir comment sélectionner les deux colonnes en particulier. Aussi comment sélectionner distinctes. Nous avons une table qui possède plusieurs entrées pour un vendeur, mais nous voulons juste obtenir une liste des fournisseurs et de la charge d'un objet dictionary. Il échoue car comme l'écrit c'est d'essayer d'ajouter une valeur de la clé a déjà été ajouté. Prendre la requête suivante.
Dictionary<int, string> dict = new Dictionary<int, string>();
dict = GetWamVendorInfo().AsEnumerable()
.Where(x => x.vendor_name != null && x.vendor_id != null)
//.Select(x => x.vendor_id).Distinct()
.Take(2)
.ToDictionary(o => int.Parse(o.vendor_id.ToString()), o => o.vendor_name);
Ce que je voudrais faire est de sélectionner juste vendor_id et vendor_name de sorte que nous pouvons obtenir à peu les différents dossiers.
Toute aide serait grandement appréciée.
Merci,
Rhonda
Vous devez vous connecter pour publier un commentaire.
Utiliser un type anonyme:
J'ai supprimé l'appel à
Take(2)
comme il n'était pas clair pourquoi vous voulez - et également supprimé de l'analyse deVendorId
, dont je me serais attendu à être déjà un type entier.Notez que vous devez presque certainement supprimer la
AsEnumerable
appel à partir de votre requête actuellement, vous allez être chercher de tous vendeurs et de filtrage à l'aide de LINQ to Objects. Il n'y a aucun point de la création d'un dictionnaire vide et ensuite l'ignorer totalement. Je soupçonne votre requête doit être:En aparté, vous devriez demander à votre dev plomb pourquoi il veut utiliser des expressions lambda (sans doute par opposition aux expressions de requête) partout. Différentes situations jusqu'à la fin avec un code plus lisible à l'aide de différentes options de syntaxe - il vaut la peine de faire preuve de souplesse sur ce front.
Suffit d'utiliser un objet anonyme:
Que c'est. Vous pouvez maintenant travailler avec
vendors[0].vendor_id
,vendors[0].vendor_name
, et ainsi de suite.