Linq - 按多个表分组
- 作者: 只进入你的身体-不进入你的生活
- 来源: 51数据库
- 2022-12-15
问题描述
使用 Linq to Sql 如何对以下 2 个表进行分组.
Using Linq to Sql how do i group the following 2 tables.
订单表:
CustomerID | Name |Date 1 | order1 | 2010-01-01 2 | order2 | 2010-01-01 2 | order3 | 2010-04-01
调用表:
CustomerID | Name |Date 1 | call1 | 2010-01-01 3 | call2 | 2010-06-01 2 | call3 | 2010-05-01
我想按日期对两个表进行分组,结果:
I want to group the two tables by date , Result:
Date | Orders | Calls 2010-01-01 | 2 | 1 2010-04-01 | 1 | 0 2010-05-01 | 0 | 1 2010-06-01 | 0 | 1
我知道如何对单个表进行分组,
i know how to group a single table ,
from o in Orders
group o by o.Date.Date into og
select new {Date = og.Key,Orders= og.Count()};
我如何将两者分组?谢谢!
推荐答案
由于两个表似乎具有相似的结构,我建议将它们投影为等效的形式,然后对这两个集合的串联进行分组.
Since both tables seem to have a similar structure I'd recommend projecting both into an equivalent form and then group on the concatenation of those two sets.
var orders = from o in Orders
select new { IsOrder = true, o.Date };
var calls = from c in Calls
select new { IsOrder = false, c.Date };
var result = from x in orders.Concat(calls)
group x by x.Date into og
select new {Date = og.Key, Orders= og.Count(o=>o.IsOrder), Calls = og.Count(c=>!c.IsTrue)};
由于 Linq2Sql 的惰性,这实际上可能会减少为单个查询.为了提高性能,我会确保这不是来自地狱的查询.
Due to the lazy nature of Linq2Sql this might actually be reduced to a single query. In the interest of performance I would make sure this is not a query from hell.
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
