我正在尝试浏览一系列DataRows,以便根据三列组合相同的行,但即使对此进行了一些研究,我仍然不确定从哪里开始。
例如,假设我要分组的DataRow列名为UserID
,ProjID
和WorkID
,还有一些我可以忽略的其他列。还有一个名为Hours
的重要专栏,我将为每个小组添加一个。这是我想要实现的目标的直观表达:
初始
UserID | ProjID | WorkID | Hours
---------------------------------
1 | 55 | 1 | 3
---------------------------------
1 | 55 | 5 | 2
1 | 55 | 5 | 5
1 | 55 | 5 | 6
---------------------------------
1 | 77 | 5 | 2
---------------------------------
2 | 77 | 2 | 7
2 | 77 | 2 | 2
结合
UserID | ProjID | WorkID | Hours
---------------------------------
1 | 55 | 1 | 3
---------------------------------
1 | 55 | 5 | 13 (sum of 6 + 5 + 2)
---------------------------------
1 | 77 | 5 | 2
---------------------------------
2 | 77 | 2 | 9 (sum of 7 + 2)
关于我应该如何开始的任何想法?此外,我对所有方法都持开放态度,而不仅仅是LINQ。
答案 0 :(得分:0)
您使用的是linq-to-entities
,linq-to-sql
,linq-to-objects
吗?
无论如何,您的解决方案应该是这样的:
var query = from x in list
group x by new { x.UserID, x.ProjID , x.WorkID } into g
select new
{
g.Key.UserID,
g.Key.ProjID,
g.Key.WorkID,
Hours = g.Sum(x => x.Hours),
};