我有一个可以这样表示的项目列表:
ClientNo Name Date Time
0001 Mike 01/12/2000 6
0002 Dave 01/12/2000 12
0001 Mike 01/12/2000 10
0002 Dave 02/12/2000 6
是否可以使用 LINQ 对其进行分组和聚合以使其看起来像这样?
ClientNo Name Date Time
0001 Mike 01/12/2000 16
0002 Dave 01/12/2000 12
0002 Dave 02/12/2000 6
我正在尝试为特定日期的每个客户返回一个汇总行。我一直在摆弄以下内容,但无法正确处理。不幸的是,我对 LINQ 的了解很差。
var result = from p in ListofModel
group p by new { p.ClientNo, p.Date, p.Name, p.Time } into g
orderby g.key.Date
select new ModelClass
{
ClientNo = g.Key.ClientNo,
Name = g.key.Name,
.....
}
毫不奇怪,这并没有给我想要的结果。如何修复?
最佳答案
我认为它应该是这样的:
from p in ListofModel
group p by new { p.ClientNo, p.Date, p.Name } into g
orderby g.key.Date
select new ModelClass
{
ClientNo = g.Key.ClientNo,
Name = g.key.Name,
Date = g.Key.Date,
Time = g.Sum(x => x.Time)
}
你不想按时间分组,所以不应该包含在分组 key 中。
关于c# - LINQ 过滤和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263127/