Verwenden von Linqs chinesisch () für eindeutige Objekteigenschaften
lINQs Distinct()
-Methode entfernt effizient doppelte Elemente aus einer Sequenz. Sie müssen jedoch häufig die Einzigartigkeit auf der Grundlage bestimmter Objekteigenschaften und nicht auf dem gesamten Objekt identifizieren.
Beispiel: Eindeutige Personen basierend auf ID
Nehmen wir an, Sie haben eine Person
-Klasse mit einer Id
Eigenschaft. Um eine Liste einzigartiger Personen basierend auf ihren IDs zu erhalten, gruppieren Sie die Liste nach Id
und wählen Sie die erste Person aus jeder Gruppe aus:
List<Person> distinctPeople = allPeople .GroupBy(p => p.Id) .Select(g => g.First()) .ToList();
Handhabung mehrerer Eigenschaften
Um die Einzigartigkeit über mehrere Eigenschaften hinweg (z. B. Id
und FavoriteColor
) zu gewährleisten, erstellen Sie einen anonymen Typ als Gruppierungsschlüssel:
List<Person> distinctPeople = allPeople .GroupBy(p => new { p.Id, p.FavoriteColor }) .Select(g => g.First()) .ToList();
Wichtiger Hinweis: Kompatibilität für Abfrageanbieter
Einige Abfrageanbieter (wie ältere Versionen des Entity Framework Core) können Ausnahmen werfen, wenn eine Gruppe leer ist. Ersetzen Sie in solchen Fällen First()
durch FirstOrDefault()
. Wenn FirstOrDefault()
null
zurückgibt, müssen Sie diese Möglichkeit in Ihrem Code verarbeiten.
EF CORE (Pre-Version 6) Lösung
Für EF -Kernversionen vor 6 ist ein robusterer Ansatz erforderlich, um potenzielle leere Gruppen zu bewältigen. Eine detaillierte Lösung finden Sie in dieser Antwort über den Stapelüberlauf: https://www.php.cn/link/7dd21654ce1c39ec7632D219E8E71F11 Dies liefert eine Methode, bei der Fälle anmutig behandelt werden, bei denen eine Eigenschaftskombination keine Objekte enthält.
Das obige ist der detaillierte Inhalt vonWie kann ich die chinesische () -Methode von LINQ für bestimmte Objekteigenschaften verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!