使用LINQ Lambda表達式執行多表連線
LINQ允許使用lambda表達式連接多個表。假設我們有三個類別:
<code>Product { Id, ProdName, ProdQty } Category { Id, CatName } ProductCategory { ProdId, CatId }</code>
使用Lambda表達式的連接
可以使用以下程式碼連接這些表:
<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>
這將產生以下類別的物件:
<code>QueryClass { productproductcategory, category }</code>
填滿新物件
要使用連線結果屬性填入新對象,可以使用下列Select方法:
<code>var categorizedProducts = query.Select(m => new { ProdId = ???, CatId = ???, // 其他赋值 });</code>
取得屬性值
可以從連接的物件中取得要賦值的特定屬性,如下所示:
<code>ProdId = m.ppc.p.Id, // 或 m.ppc.pc.ProdId CatId = m.c.CatId // 其他赋值</code>
查詢語法替代方案
或者,可以使用查詢語法,它提供了一種更簡潔的方法:
<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>
此查詢的結果與lambda表達式方法相同。如果更注重可讀性,建議使用查詢語法。
以上是如何使用 LINQ Lambda 表達式執行多個表聯結?的詳細內容。更多資訊請關注PHP中文網其他相關文章!