ホームページ > バックエンド開発 > C++ > LINQ ラムダ式を使用して複数テーブルの結合を効率的に実行するにはどうすればよいですか?

LINQ ラムダ式を使用して複数テーブルの結合を効率的に実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-10 11:29:43
オリジナル
686 人が閲覧しました

How Can LINQ Lambda Expressions Be Used to Efficiently Perform Multi-Table Joins?

LINQ ラムダ式を使用した複数テーブル結合のマスター

LINQ (言語統合クエリ) は、データベースと対話するための強力かつ効率的な方法を提供します。 データ取得で頻繁に行われるタスクには、複数のテーブルの結合が含まれます。このガイドでは、LINQ ラムダ式を使用してこれらの結合を効果的に実行する方法を説明します。

データベーステーブルを表す 3 つのクラスの例を考えてみましょう:

  • 製品: IdProdNameProdQty
  • カテゴリ: IdCatName
  • ProductCategory: (結合テーブル) ProdIdCatId

LINQ の Join メソッドにより、これらのテーブルの結合が容易になります。 以下に例を示します:

<code class="language-csharp">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>
ログイン後にコピー

このコードは、ProductProductCategoryCategory をそれぞれの Id 列と CatId 列に基づいて結合します。 ただし、結果はネストされたオブジェクトになります。

より合理化された結果、関連するすべてのプロパティを含む単一のオブジェクトを作成するには、Select メソッドを使用します。

<code class="language-csharp">var categorizedProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });</code>
ログイン後にコピー

結合されたテーブルのプロパティをこの新しいオブジェクトに正しく割り当てる方法は次のとおりです:

<code class="language-csharp">var categorizedProducts = query.Select(m => new {
    ProdId = m.productproductcategory.product.Id, // or m.productproductcategory.productcategory.ProdId
    CatId = m.category.Id,
    // other property assignments from m.productproductcategory.product, m.productproductcategory.productcategory, and m.category
});</code>
ログイン後にコピー

LINQ ラムダ式と Join および Select を組み合わせたこのアプローチは、複数テーブル結合の効率的な方法を提供し、必要なデータをすべて含む単一の管理しやすいオブジェクトを生成します。

以上がLINQ ラムダ式を使用して複数テーブルの結合を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート