2017-06-15 2 views
0

J'ai cette requête Linq:Renvoyer une colonne supplémentaire dans Linq Query?

var area = db.MyDbSet 
    .Where(s => s.langid == langid) 
    .GroupBy(s => s.Title) 
    .Select(g => new { Title = g.Key }) 
    .Select(s => s.Title); 

Je veux retourner une autre colonne de la même table, elle est appelée: CodeId.

Je ne suis pas un programmeur Linq et je suis complètement perdu dans toutes ces choses de mash-mash en C#, donc je ne peux pas vraiment comprendre ce que je devrais faire.

Quelqu'un peut-il m'aider à retourner une autre colonne de la même table avec le même appel de requête?

+0

il suffit d'ajouter la colonne dans la requête comme ceci: '.Choisir (g => nouveau {Titre = g.Key, CodeId = g.propertyName}) ' – OmG

Répondre

3

Cela peut vous aider:

var area = db.MyDbSet 
        .Where(s => s.langid == langid) 
        .GroupBy(s => s.Title) 
        .Select(g => new { Title = g.Key, CodeId = g.FirstOrDefault().CodeId }); 
+0

Que ferait FirstOrDefault? Prendre une seule valeur? Mais je ne vois pas CodeId dans la ligne suivante lorsque je tape s.CodeId. Cela n'existe pas dans le contexte actuel. – Vlad

+1

Ici, la requête va grouper les données par Titre et après le groupby, le premier CodeId de ce groupe sera retourné. –

0
var area = db.MyDbSet 
    .Where(s => s.langid == langid) 
    .GroupBy(s => s.Title) 
    .Select(g => new { 
     Title = g.Key, 
     CodeId = g.Id, 
     OtherField = "Field" 
    }) 
+0

Il s'avère que j'ai un problème avec mon modèle, donc g.CodeId n'est pas visible. – Vlad

+0

J'ai deux clés dans cette table, langid et CodeId, donc elles sont marquées avec [Key, Column (Order = 0)] et [Key, Column (Order = 1)] Doit faire quelque chose d'additionnel dans ma requête, ou le problème est dans mon modèle? – Vlad