首页 > 后端开发 > C++ > 如何使用 LINQ to SQL 执行左连接、分组和计数?

如何使用 LINQ to SQL 执行左连接、分组和计数?

Linda Hamilton
发布: 2025-01-08 20:17:49
原创
176 人浏览过

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 以及带有谓词的 Count() 方法以仅对非空子 ID 进行计数:

<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 执行左连接、分组和计数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板