我有一个可以这样表示的项目列表:
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,
.....
}
毫不奇怪,这并没有给我我想要的结果。如何解决?
答案 0 :(得分:0)
我认为它应该是这样的:
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)
}
您不希望按时间分组,因此不应将其包含在组密钥中。
答案 1 :(得分:-2)
试试这个:
var result = from p in ListofModel
group p by new { p.ClientNo, p.Name, p.Date } into g
orderby g.Key.Date
select new ModelClass
{
ClientNo = g.Key.ClientNo,
Name = g.Key.Name,
Date = g.Key.Date,
Time = g.SUM(t => t.Time)
}