dan*_*ano 7 c# linq asp.net linq-to-sql
使用Linq to Sql如何对以下2个表进行分组.
订单表:
CustomerID | Name |Date
1 | order1 | 2010-01-01
2 | order2 | 2010-01-01
2 | order3 | 2010-04-01
Run Code Online (Sandbox Code Playgroud)
电话表:
CustomerID | Name |Date
1 | call1 | 2010-01-01
3 | call2 | 2010-06-01
2 | call3 | 2010-05-01
Run Code Online (Sandbox Code Playgroud)
我想按日期对两个表进行分组,结果:
Date | Orders | Calls
2010-01-01 | 2 | 1
2010-04-01 | 1 | 0
2010-05-01 | 0 | 1
2010-06-01 | 0 | 1
Run Code Online (Sandbox Code Playgroud)
我知道如何组合一张桌子,
from o in Orders
group o by o.Date.Date into og
select new {Date = og.Key,Orders= og.Count()};
Run Code Online (Sandbox Code Playgroud)
我怎么组合两个?谢谢!
由于两个表似乎都具有相似的结构,我建议将两者都投影到等效的形式中,然后对这两个表的串联进行分组.
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)};
Run Code Online (Sandbox Code Playgroud)
由于Linq2Sql的惰性,这可能实际上减少为单个查询.为了表现,我会确保这不是来自地狱的问题.
归档时间: |
|
查看次数: |
7517 次 |
最近记录: |