基于相同列合并或分组行



我正在尝试遍历一个 DataRow 数组,以便基于三列组合相同的行,但即使在对此进行了一些研究之后,我仍然不确定从哪里开始。

例如,假设我要分组的 DataRow 列称为 UserIDProjIDWorkID ,以及一堆我可以忽略的其他列。还有另一个重要的列叫做 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-entitieslinq-to-sqllinq-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),
            };

相关内容

  • 没有找到相关文章

最新更新