首頁 > 後端開發 > C++ > 如何使用 LINQ Lambda 表達式執行多個表聯結?

如何使用 LINQ Lambda 表達式執行多個表聯結?

Patricia Arquette
發布: 2025-01-10 10:13:41
原創
591 人瀏覽過

How to Perform Multiple Table Joins Using LINQ Lambda Expressions?

使用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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板