我正在尝试遍历一个 DataRow 数组,以便基于三列组合相同的行,但即使在对此进行了一些研究之后,我仍然不确定从哪里开始。
例如,假设我要分组的 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。
你使用的是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),
};