gpt4 book ai didi

c# - Linq - 按多个表分组

转载 作者:太空狗 更新时间:2023-10-29 20:11:54 24 4
gpt4 key购买 nike

使用 Linq to Sql 如何对以下 2 个表进行分组。

订单表:

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

我想按日期对两个表进行分组,结果:

Date       | Orders | Calls
2010-01-01 | 2 | 1
2010-04-01 | 1 | 0
2010-05-01 | 0 | 1
2010-06-01 | 0 | 1

我知道如何对单个表进行分组,

from o in Orders        
group o by o.Date.Date into og
select new {Date = og.Key,Orders= og.Count()};

我如何将两者分组?谢谢!

最佳答案

由于这两个表似乎具有相似的结构,我建议将它们投影成等效的形式,然后将这两个集合串联起来进行分组。

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 的惰性特性,这实际上可能会减少为单个查询。为了提高性能,我会确保这不是来自 hell 的查询。

关于c# - Linq - 按多个表分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3435485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com