Heim > Backend-Entwicklung > C++ > Wie kann man mehrere Tabellen mithilfe von LINQ-Lambda-Ausdrücken effizient verknüpfen?

Wie kann man mehrere Tabellen mithilfe von LINQ-Lambda-Ausdrücken effizient verknüpfen?

Linda Hamilton
Freigeben: 2025-01-10 11:36:42
Original
266 Leute haben es durchsucht

How to Efficiently Join Multiple Tables Using LINQ Lambda Expressions?

Verwenden Sie LINQ Lambda-Ausdrücke, um Multi-Table-Joins durchzuführen

Einführung

In LINQ können mehrere Tabellen verknüpft werden, um Daten aus verschiedenen Datenquellen zu kombinieren. In diesem Artikel wird erläutert, wie Sie Multi-Table-Joins mithilfe von Lambda-Ausdrücken in LINQ durchführen.

Frage

Sie versuchen, drei Tabellen zu verknüpfen: Product, Category und ProductCategory. Nach der Verkettung möchten Sie eine einzelne Klasse erhalten, die alle relevanten Klasseneigenschaften vereint. Der von Ihnen geschriebene Code scheint jedoch nicht die erwarteten Ergebnisse zu liefern.

Antworten

Beim Verketten mehrerer Verbindungen in einem LINQ-Lambda-Ausdruck werden Zwischenergebnisse als anonyme Typen dargestellt. Das bedeutet, dass das Ergebnis jedes Joins ein neuer anonymer Typ ist, der die Eigenschaften der verbundenen Tabellen kombiniert.

Um eine einzelne Klasse zu erhalten, die alle relevanten Klassenattribute enthält, müssen Sie die Attribute angeben, die Sie in das Endergebnis einbeziehen möchten. Dies kann mit dem Select-Operator erfolgen.

Das Folgende ist der korrigierte Code:

<code>var categorizedProducts = product
    .Join(productcategory, p => p.Id, pc => pc.ProdId, (p, pc) => new { p, pc })
    .Join(category, ppc => ppc.pc.CatId, c => c.Id, (ppc, c) => new { ppc, c })
    .Select(m => new { 
        ProdId = m.ppc.p.Id, // 或 m.ppc.pc.ProdId
        CatId = m.c.CatId
        // 其他赋值
    });</code>
Nach dem Login kopieren

In diesem Code führen wir zunächst einen Join zwischen drei Tabellen durch und speichern das Ergebnis in einem anonymen Zwischentyp. Anschließend verwenden wir den Select-Operator, um das Endergebnis in einen neuen anonymen Typ zu projizieren, der die erforderlichen Eigenschaften (ProdId und CatId) enthält.

Sie können Ihren Code weiter vereinfachen, indem Sie Abfragesyntax anstelle von Lambda-Ausdrücken verwenden:

<code>var categorizedProducts =
    from p in product
    join pc in productcategory on p.Id equals pc.ProdId
    join c in category on pc.CatId equals c.Id
    select new {
        ProdId = p.Id, // 或 pc.ProdId
        CatId = c.CatId
        // 其他赋值
    };</code>
Nach dem Login kopieren

Die Abfragesyntax ist besser lesbar und leichter zu verstehen, insbesondere bei komplexen Abfragen mit mehreren Verknüpfungen.

Das obige ist der detaillierte Inhalt vonWie kann man mehrere Tabellen mithilfe von LINQ-Lambda-Ausdrücken effizient verknüpfen?. 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