Heim > Backend-Entwicklung > C++ > Fluent-Syntax vs. Abfrageausdruck in LINQ: Wann sollte ich welche verwenden?

Fluent-Syntax vs. Abfrageausdruck in LINQ: Wann sollte ich welche verwenden?

Mary-Kate Olsen
Freigeben: 2025-01-27 08:21:08
Original
421 Leute haben es durchsucht

Fluent Syntax vs. Query Expression in LINQ: When Should I Use Which?

LINQ-Abfrage: Vergleich fließender Syntax und Abfrageausdrücke

LINQ bietet zwei Abfragemethoden: Fluent-Syntax und Abfrageausdruckssyntax. Beide können Abfragevorgänge implementieren, unterscheiden sich jedoch in den jeweiligen Szenarien.

Fließende Syntax

Die Fluent-Syntax ähnelt der von C# und verwendet Methodenketten zum Erstellen von Abfragen. Bei einfachen Abfragen ist es in der Regel prägnanter und bietet Zugriff auf alle Abfrageoperatoren.

Abfrageausdruckssyntax

Die Syntax des Abfrageausdrucks ähnelt der von SQL und ist daher einfacher zu lesen und zu verwenden. Es funktioniert gut in Szenarien, in denen mehrere Gültigkeitsbereichsvariablen erforderlich sind, z. B. die Verwendung des Schlüsselworts „let“, mehrerer Generatoren oder Join-Abfragen.

Beispiel: mehrere Bereichsvariablen

Hier ist ein Beispiel für die Verwendung der Abfrageausdruckssyntax:

<code class="language-csharp">from fullName in fullNames
from name in fullName.Split()
orderby fullName, name
select name + " came from " + fullName;</code>
Nach dem Login kopieren

Um eine flüssige Syntax zu verwenden, müssen Sie wie folgt schreiben:

<code class="language-csharp">fullNames
  .SelectMany(fName => fName.Split().Select(name => new { name, fName }))
  .OrderBy(x => x.fName)
  .ThenBy(x => x.name)
  .Select(x => x.name + " came from " + x.fName);</code>
Nach dem Login kopieren

Offensichtlich ist die Syntax des Abfrageausdrucks sauberer und leichter zu verstehen, wenn mehrere Bereichsvariablen beteiligt sind.

Mischen Sie es ab

Um die Vorteile beider Syntaxen zu kombinieren, können sie in LINQ-Abfragen gemischt werden. Zum Beispiel:

<code class="language-csharp">var query =
  from c in db.Customers
  let totalSpend = c.Purchases.Sum(p => p.Price)    // 此处使用方法语法
  where totalSpend > 1000
  from p in c.Purchases
  select new { p.Description, totalSpend, c.Address.State };</code>
Nach dem Login kopieren

In diesem Beispiel wird die Methodensyntax in der Operation „Summe“ verwendet, während die Lesbarkeit der Abfrageausdruckssyntax in der Gesamtabfrage erhalten bleibt. Welche Syntax zu wählen ist, hängt vom jeweiligen Szenario und den persönlichen Vorlieben ab. Durch den flexiblen Einsatz beider Syntaxen kann die Lesbarkeit und Effizienz des Codes verbessert werden.

Das obige ist der detaillierte Inhalt vonFluent-Syntax vs. Abfrageausdruck in LINQ: Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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