2010-08-16 4 views
2

J'essaie d'obtenir une liste des valeurs uniques d'un champ appelé 'domaine' en utilisant la requête ci-dessous. Au lieu de me donner les valeurs elles-mêmes, mon menu déroulant (drpDomain) contient des valeurs dans ce format: {Key = LNAU} etc. Tout ce que je veux voir, c'est la valeur elle-même. Est-ce que je manque quelque chose d'évident? Merci!Regroupement dans LINQ - question simple

var domainList = from v in db.Vendors 
         group v by new {v.Domain} into g 
         select g.Key; 

     drpDomain.DataSource = domainList; 
     drpDomain.DataBind(); 
+0

peut-être loin mais devrait-il être g.Value? – griegs

+0

Aucun g.Value semblait être disponible. Merci pour le commentaire cependant :) – Glinkot

+0

Dans Linq, le groupement retourne réellement des groupes (IGrouping), contrairement aux groupements SQL qui retournent essentiellement les "en-têtes" des groupes. – SirDemon

Répondre

4

Considérez ceci, au lieu:

var domainList = from v in db.Vendors 
       select v.Domain; 

drpDomain.DataSource = domainList.Distinct(); 
drpDomain.DataBind(); 

Note:

Le méchant réel dans votre requête est l'objet anonyme; cependant, la requête distincte est plus efficace dans la communication de l'intention, et peut même être plus efficace. Cela dit, si vous voulez seulement corriger les résultats inattendus de la requête de regroupement, essayez ceci:

var domainList = from v in db.Vendors 
       group v by v.Domain into g 
       select g.Key; 
+0

Parfait! Merci beaucoup pour votre aide. – Glinkot