Heim > Backend-Entwicklung > C++ > Wie führe ich mehrere Tabellenverknüpfungen mithilfe von LINQ-Lambda-Ausdrücken durch?

Wie führe ich mehrere Tabellenverknüpfungen mithilfe von LINQ-Lambda-Ausdrücken durch?

Patricia Arquette
Freigeben: 2025-01-10 10:13:41
Original
621 Leute haben es durchsucht

How to Perform Multiple Table Joins Using LINQ Lambda Expressions?

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

LINQ ermöglicht die Verknüpfung mehrerer Tabellen mithilfe von Lambda-Ausdrücken. Nehmen wir an, wir haben drei Klassen:

<code>Product { Id, ProdName, ProdQty }
Category { Id, CatName }
ProductCategory { ProdId, CatId }</code>
Nach dem Login kopieren

Verkettung mit Lambda-Ausdrücken

Diese Tabellen können mit dem folgenden Code verknüpft werden:

<code>var query = product.Join(
    productcategory,
    p => p.Id,
    pc => pc.ProdID,
    (p, pc) => new { product = p, productcategory = pc }
).Join(
    category,
    ppc => ppc.productcategory.CatId,
    c => c.Id,
    (ppc, c) => new { productproductcategory = ppc, category = c }
);</code>
Nach dem Login kopieren

Dadurch werden Objekte der folgenden Klassen generiert:

<code>QueryClass { productproductcategory, category }</code>
Nach dem Login kopieren

Neues Objekt füllen

Um ein neues Objekt mit den Verbindungsergebniseigenschaften zu füllen, können Sie die folgende Select-Methode verwenden:

<code>var categorizedProducts = query.Select(m => new {
    ProdId = ???, 
    CatId = ???, 
    // 其他赋值
});</code>
Nach dem Login kopieren

Attributwert abrufen

Die spezifische Eigenschaft, die zugewiesen werden soll, kann wie folgt vom verbundenen Objekt abgerufen werden:

<code>ProdId = m.ppc.p.Id, // 或 m.ppc.pc.ProdId
CatId = m.c.CatId
// 其他赋值</code>
Nach dem Login kopieren

Alternativen zur Abfragesyntax

Alternativ können Sie die Abfragesyntax verwenden, die einen prägnanteren Ansatz bietet:

<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 Ergebnisse dieser Abfrage sind die gleichen wie bei der Lambda-Ausdrucksmethode. Wenn die Lesbarkeit wichtiger ist, empfiehlt sich die Verwendung der Abfragesyntax.

Das obige ist der detaillierte Inhalt vonWie führe ich mehrere Tabellenverknüpfungen mithilfe von LINQ-Lambda-Ausdrücken durch?. 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