Heim > Backend-Entwicklung > C++ > Was ist der Unterschied zwischen den Select- und Selectmany -Operatoren von Linq?

Was ist der Unterschied zwischen den Select- und Selectmany -Operatoren von Linq?

Susan Sarandon
Freigeben: 2025-01-28 17:51:10
Original
988 Leute haben es durchsucht

What's the Difference Between LINQ's Select and SelectMany Operators?

linq zu SQL: Verständnis Select und SelectMany

Mastering Linq in SQL erfordert das Verständnis der Schlüsselunterschiede zwischen Select und SelectMany. Beide Projektdaten, aber ihre Ansätze unterscheiden sich erheblich.

Select führt eine Eins-zu-Eins-Transformation durch. Es nimmt jedes Element aus einer Eingangssequenz und wendet eine Funktion an, um ein neues Element in der Ausgangssequenz zu erzeugen. Dies ist ideal, um bestimmte Eigenschaften zu extrahieren oder Berechnungen für einzelne Elemente durchzuführen.

SelectMany hingegen verwandelt eine Sequenzsequenzen in eine einzelne Sequenz. Dies ist von unschätzbarem Wert bei der Arbeit mit hierarchischen oder verschachtelten Datenstrukturen. Sie können mehrere Ebenen durchqueren und auf die zugrunde liegenden Elemente zugreifen.

veranschaulichen wir eine Person -Klasse mit einer Sammlung von PhoneNumber Objekten:

<code class="language-csharp">public class PhoneNumber
{
    public string Number { get; set; }
}

public class Person
{
    public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
    public string Name { get; set; }
}</code>
Nach dem Login kopieren

Select Beispiel:

<code class="language-csharp">IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);</code>
Nach dem Login kopieren

Dies verwendet Select, um eine Folge von Telefonnummernsequenzen zu erhalten - eine für jede Person. Das Ergebnis bleibt verschachtelt.

SelectMany Beispiel:

<code class="language-csharp">IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);</code>
Nach dem Login kopieren

SelectMany flacht die verschachtelte Struktur ab und erzeugt eine einzige Sequenz, die alle Telefonnummern aus allen Personen enthält.

Kombinieren Sie Eltern- und Kinderdaten mit SelectMany:

Ein leistungsstarkes Merkmal von SelectMany ist seine Fähigkeit, übergeordnete Daten in die Projektion einzubeziehen. Mit der Überlastung mit einem zweiten Parameter können Sie ein neues Objekt erstellen, das übergeordnete und untergeordnete Eigenschaften kombiniert:

<code class="language-csharp">var directory = people
    .SelectMany(p => p.PhoneNumbers, (parent, child) => new { parent.Name, child.Number });</code>
Nach dem Login kopieren

Dies erzeugt ein Verzeichnis, in dem der Name jeder Person und deren zugehörigen Telefonnummern aufgeführt sind. Die Ausgabe kombiniert Daten sowohl aus den Klassen Person als auch aus PhoneNumber.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den Select- und Selectmany -Operatoren von Linq?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage