Heim >Backend-Entwicklung >C++ >Wie führe ich mehrere Tabellenverknüpfungen mithilfe von LINQ-Lambda-Ausdrücken durch?
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!