ホームページ >バックエンド開発 >C++ >LINQ to SQL で左結合、Group By、Count を実行するにはどうすればよいですか?

LINQ to SQL で左結合、Group By、Count を実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-08 20:17:49169ブラウズ

How to Perform a Left Join, Group By, and Count with LINQ to SQL?

LINQ to SQL: 左結合、グループ化、カウント

この例では、LINQ to SQL を使用して左結合、グループ化、およびカウントの操作を実行し、特定の SQL クエリの機能をミラーリングする方法を示します。

SQL クエリ:

次の SQL クエリは、LINQ 変換のターゲットとして機能します:

<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>

このクエリは、ParentTableChildTable を結合し、親ごとに子レコードをカウントし、親に子がないケースを処理します (LEFT OUTER JOIN を使用)。

同等の LINQ to SQL:

同等の LINQ to SQL クエリは、join 句、左結合動作の DefaultIfEmpty()group by、および null 以外の子 ID のみをカウントする述語を含む Count() メソッドを使用します。

<code class="language-csharp">var query = from p in context.ParentTable
            join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
            from j2 in j1.DefaultIfEmpty()
            group j2 by p.ParentId into grouped
            select new { 
                ParentId = grouped.Key, 
                ChildCount = grouped.Count(t => t.ChildId != null) 
            };</code>

この LINQ クエリは SQL クエリと同じ結果をもたらします。 into j1from j2 in j1.DefaultIfEmpty() の組み合わせにより、左外部結合が正しく実装されます。 group by 句は結果を ParentId でグループ化し、Count() メソッドは条件 (t => t.ChildId != null) を使用して、既存の子レコードのみがカウントされるようにします。 匿名型 new { ParentId, ChildCount } は、最終的な結果セットを作成します。

これにより、SQL クエリのロジックが読みやすく保守可能な LINQ 式に明確かつ簡潔に変換されます。

以上がLINQ to SQL で左結合、Group By、Count を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。