Berücksichtigung der folgenden Aufzeichnungen:
Id F1 F2 F3
-------------------------------------------------
1 Nima 1990 10
2 Nima 1990 11
3 Nima 2000 12
4 John 2001 1
5 John 2002 2
6 Sara 2010 4
Ich möchte basierend auf dem F1
Feld gruppieren und sortieren Id
und alle Felder aus dem ersten Datensatz der Gruppe abrufen, die diesen Datensätzen ähnlich sind:
Id F1 F2 F3
-------------------------------------------------
1 Nima 1990 10
4 John 2001 1
6 Sara 2010 4
Wie kann ich das mit linq machen?
c#
linq
c#-4.0
linq-to-entities
Arian
quelle
quelle
OrderBy(p => p.Id)
, sie wollten es nach ID sortiert, nicht nach der Jahresspalte.quelle
.GroupBy(x=>x.F1).Select(g=>...)
: es kann leichter zu verstehen aussehen..First()
durch.FirstOrDefault()
oder Sie erhalten die Ausnahme:The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.
.First()
. Die Frage des OP sieht wirklich so aus, als würde er sich nur um Linq-to-Object kümmern, obwohl er die Frage auch mit markiert hatlinq-to-entities
(nicht sicher, ob er verstanden hat, was das ist).Die Antwort von @Alireza ist völlig korrekt, aber Sie müssen dies beachten, wenn Sie diesen Code verwenden
Dies ähnelt diesem Code, da Sie die Liste bestellen und dann die Gruppierung durchführen, sodass Sie die erste Gruppenreihe erhalten
Wenn Sie nun etwas Komplexeres tun möchten, z. B. dasselbe Gruppierungsergebnis, aber das erste Element von F2 und das letzte Element von F3 oder etwas Benutzerdefinierteres, können Sie dies tun, indem Sie den folgenden Code studieren
So bekommen Sie so etwas wie
quelle
Verwenden Sie es, um das zu erreichen, was Sie wollen. Entscheiden Sie dann, welche Eigenschaften Sie zurückgeben möchten.
quelle