Select
und SelectMany
zwischen Linqs Select
und SelectMany
Methoden können schwierig sein, insbesondere bei der Arbeit mit LINQ an SQL. Einfache Array -Beispiele erfassen ihre Datenbankauswirkungen oft nicht vollständig.
Select
: individuelle Werte Verwenden Sie Select
Wenn Ihre Abfrage einzelne Werte aus zugehörigen Entitäten extrahieren muss. Zum Beispiel:
<code class="language-csharp">IEnumerable<Person> people = new List<Person>(); var phoneNumbers = people.Select(p => p.PhoneNumber);</code>
Dies enthält eine Liste von Person
Objekten und gibt eine Liste zurück, die nur ihre PhoneNumber
Eigenschaften enthält.
SelectMany
: Abflachende verschachtelte Sammlungen SelectMany
ist entscheidend für die "Abflachung" verschachtelter Datenstrukturen. Passen wir das Beispiel an:
<code class="language-csharp">var phoneNumbers = people.SelectMany(p => p.PhoneNumbers);</code>
hier unter der Annahme PhoneNumbers
kombiniert SelectMany
alle Telefonnummern aus allen Personen zu einer einzigen Liste. Dies ist nützlich, wenn Sie eine einzige, einheitliche Liste aller Telefonnummern benötigen.
Ein wichtiger Vorteil von SelectMany
ist die Fähigkeit, übergeordnete Entitätsdaten in die Ergebnisse aufzunehmen. Betrachten Sie dies:
<code class="language-csharp">var directory = people .SelectMany(p => p.PhoneNumbers, (parent, child) => new { parent.Name, child.Number });</code>
Dies erstellt einen anonymen Typ, der sowohl den Namen der Person (parent.Name
) als auch deren Telefonnummer (child.Number
) enthält, wobei die Daten aus beiden Ebenen effektiv verbinden.
, um Select
und SelectMany
in Aktion zu erleben, erkunden Sie eine Live -Demo (Link zu .NET Fiddle -Beispiel würde hierher gehen, wenn dies bereitgestellt wird). Diese praktische Erfahrung verstärkt Ihr Verständnis dieser leistungsstarken LINQ-Operatoren in einem Datenbankkontext.
Das obige ist der detaillierte Inhalt vonWann verwenden Sie LINQs Select vs. SelectMany in SQL -Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!