Heim >Backend-Entwicklung >C++ >Wie verwendete ich das LINQ -Methode von CHINEQ für bestimmte Eigenschaften komplexer Objekte?

Wie verwendete ich das LINQ -Methode von CHINEQ für bestimmte Eigenschaften komplexer Objekte?

Barbara Streisand
Barbara StreisandOriginal
2025-02-02 09:06:10446Durchsuche

How to Use LINQ's Distinct() Method on Specific Properties of Complex Objects?

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.

erreicht werden kann

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:

hat
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn