ホームページ > バックエンド開発 > C++ > LINQ を使用して左結合、グループ化、非 Null 子レコードのカウントを実行する方法

LINQ を使用して左結合、グループ化、非 Null 子レコードのカウントを実行する方法

Linda Hamilton
リリース: 2025-01-08 20:01:43
オリジナル
561 人が閲覧しました

How to Perform a Left Join, Group By, and Count Non-Null Child Records using LINQ?

LINQ を使用して左結合、グループ化、および空でないサブレコードのカウントを実装します

SQL では、次のクエリは 2 つのテーブル、ParentTable と ChildTable の間で左結合を実行し、各親レコードに関連付けられた子レコードの数をカウントします。

<code class="language-sql">SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
  LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId</code>
ログイン後にコピー

次の手順を使用して、このクエリを LINQ to SQL に変換します。

  1. Join メソッドと DefaultIfEmpty メソッドを使用して左結合を実行します:
<code class="language-csharp">from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()</code>
ログイン後にコピー
  1. 親 ID による結果のグループ化:
<code class="language-csharp">group j2 by p.ParentId into grouped</code>
ログイン後にコピー
  1. 各親レコードに関連付けられた子レコードの数をカウントします:
<code class="language-csharp">select new { ParentId = grouped.Key, Count = grouped.Count() }</code>
ログイン後にコピー

ただし、上記のコードは、null 値を含む各親レコードの子レコードの合計数を返します。空ではないサブレコードのみをカウントするには、Count 式を次のように変更します。

<code class="language-csharp">select new { ParentId = grouped.Key, Count = grouped.Where(t => t.ChildId != null).Count() }</code>
ログイン後にコピー
これにより、

が空ではない子レコードのみがカウントされるようになります。 最終的な LINQ クエリは SQL クエリのロジックを正確に反映し、空ではないサブレコードを効果的にカウントします。 ChildId

以上がLINQ を使用して左結合、グループ化、非 Null 子レコードのカウントを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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