Heim >Backend-Entwicklung >C++ >Wie verwendete ich das LINQ -Methode von CHINEQ für bestimmte Eigenschaften komplexer Objekte?
Eindeutige Datensätze extrahieren basierend auf bestimmten Eigenschaften mit linq
Linqs Distinct()
Methode entfernt effizient doppelte Elemente aus einer Sammlung. Wenn Sie jedoch mit komplexen Objekten (z. B. A List<T>
) umgehen, kann dies direkt mit Distinct()
für das gesamte Objekt das gewünschte Ergebnis verwenden, wenn Sie nur auf bestimmten Eigenschaften Einzigartigkeit benötigen. Dieser Artikel zeigt, wie dies mit GroupBy
und Select
.
Nutzung von GroupBy für Eigenschaftenbasierte Einzigartigkeit
Der Schlüssel zum Erhalten verschiedener Datensätze basierend auf bestimmten Eigenschaften besteht darin, die GroupBy
-Methode von LinQ zu verwenden. Diese gruppiert Elemente, die dieselbe Eigenschaft (oder Kombination von Eigenschaften) teilen, und ermöglicht es Ihnen dann, einen Vertreter aus jeder Gruppe auszuwählen.
veranschaulichen wir mit einem List<Person>
, wobei jedes Person
Objekt Eigenschaften wie Id
und Name
:
<code>Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: Id=2, Name="Test2"</code>
, um unterschiedliche Person
-Objekte abzurufen, die ausschließlich auf der Eigenschaft Id
basieren, verwenden Sie die folgende LINQ -Abfrage:
<code class="language-csharp">List<Person> distinctPeople = allPeople .GroupBy(p => p.Id) .Select(g => g.First()) .ToList();</code>
Hier gruppiert GroupBy(p => p.Id)
die Person
-Objekte nach ihren Id
-Werten. Select(g => g.First())
wählt dann das erste Element aus jeder Gruppe aus und gibt Ihnen effektiv ein Person
Objekt pro eindeutiges Id
.
bis mehrere Eigenschaften
ausdehnen Diese Technik erstreckt sich leicht auf mehrere Eigenschaften. Zu gruppieren sowohl Id
als auch nach FavoriteColor
:
<code class="language-csharp">List<Person> distinctPeople = allPeople .GroupBy(p => new { p.Id, p.FavoriteColor }) .Select(g => g.First()) .ToList();</code>
Diese Gruppen Person
Objekte basieren auf der Kombination von Id
und FavoriteColor
, um die Einzigartigkeit über beide Eigenschaften hinweg zu gewährleisten. Auch hier wählt Select(g => g.First())
einen einzelnen Vertreter aus jeder Gruppe.
Wichtige Überlegungen
In diesem Ansatz geht davon aus, dass Ihr Abfrageanbieter potenziell leere Gruppen verarbeiten kann. Wenn dies nicht garantiert ist, sollten Sie FirstOrDefault()
anstelle von First()
verwenden, um solche Fälle anmutig zu behandeln.
Für ältere Versionen des Entitäts -Framework -Kerns (vor Version 6) sind möglicherweise alternative Methoden erforderlich. In diesem Stapelüberlauf -Antwort finden Sie eine Anleitung: https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11
Das obige ist der detaillierte Inhalt vonWie verwendete ich das LINQ -Methode von CHINEQ für bestimmte Eigenschaften komplexer Objekte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!