複雑なマルチテーブル接続を変換し、カウントおよび左接続SQLクエリをlinq
変換ルールを理解してください
SQLをLINQに変換するには、関連する特定の変換ルールを理解する必要があります。いくつかの重要な原則には、次のものがあります
独立したサブクエリは別の変数に変換でき、外部列のサブクエリには括弧が必要です。
DefaultIfEmpty()
、Count()
Distinct().Count()
SQLクエリの変換
提供されたSQLクエリを考慮して、最初にカウントの計算に使用される子クエリを定義します。 さあ、主なお問い合わせ:
このLINQ式は、必要な接続、グループ、およびカウント操作を実行します。
<code class="language-csharp">var subrq = from r in Table_R group r by r.Id into rg select new { Id = rg.Key, cnt = rg.Count() };</code>
<code class="language-csharp">var ansq = (from c in Table_C join v in Table_V on c.Id equals v.Id join r in subrq on c.Id equals r.Id into rj from r in rj.DefaultIfEmpty() where c.IdUser == "1234" group new { c, v, r } by new { c.Id, c.Title, r.cnt } into cvrg select new { cvrg.Key.Title, Nb_V2 = cvrg.Count(), Nb_V1 = cvrg.Select(cvr => cvr.v.IdUser).Distinct().Count(), Nb_R = (int?)cvrg.Key.cnt }).Distinct();</code>
lambda式を変換するために、
およびメソッドを使用して左接続を処理できます。 このラムダスタイルの表現は、問い合わせや理解と同じタスクです。
以上が複数の結合、カウント、および左結合を含む複雑な SQL クエリを LINQ に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。