2016-11-14 4 views
2

Ich bin relativ neu zu Linq und versuche, nach meiner Linq-Abfrage gruppieren, aber bekomme den Fehler, der Feldwert nicht enthält.Fehler bei der Verwendung der Gruppe von in LinQ

Unten ist meine Linq-Abfrage. Kann mir bitte jemand dabei helfen.

var name = dt1.AsEnumerable() 
    .Where(p => (int)p["Age"] >= 29) 
    .GroupBy(p =>p.Field<string>("Role")) 
    .Select(p => new{ID = p.Field<int>("ID"),Name =p.Field<string>("Name"),Role = p.Field<string>("Role"),Age = p.Field<int("Age")}); 
+1

Was ist der Zweck der groupbby hier? – Damith

+0

Bitte fügen Sie weitere Informationen hinzu, um [ein vollständiges und überprüfbares Beispiel] zu haben (http://stackoverflow.com/help/mcve) –

Antwort

1

Korrekter Code:

var name = dt1.AsEnumerable() 
        .Where(p => p.Field<int>("Age") >= 29) 
        .GroupBy(p =>p.Field<string>("Role")) 
        .Select(q => q.Select(p => new{ID = p.Field<int>("ID"),Name =p.Field<string>("Name"),Role = p.Field<string>("Role"),Age = p.Field<int>("Age")})); 

Erläuterung:

  • GroupBy wird IEnumerable<IGrouping<string,DataRow>> schaffen in diesem Fall
  • Wenn Sie Select tun, Sie IGrouping bekommen, auf dem Sie benötigen weiter zu tun Select, um die genaue e lement DataRow zur Erzeugung von Ergebnis Anonymous Type wie in diesem Fall
+0

Danke für die Erklärung. Es hat gut funktioniert. –

0

LINQ Case statement with COUNT and GROUP Siehe zum Auswählen von Feldern in der Gruppe, die von. Sowohl Lambda exp als auch C# linq sind verfügbar.

+0

Bitte fügen Sie dies als Kommentar hinzu, es gibt keinen Mehrwert von Ihrem Ende –

Verwandte Themen