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
Patricia ArquetteOriginal
2025-01-10 10:13:41593Durchsuche

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>

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>

Dadurch werden Objekte der folgenden Klassen generiert:

<code>QueryClass { productproductcategory, category }</code>

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>

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>

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>

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!

Stellungnahme:
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