【发布时间】:2010-02-18 23:52:59
【问题描述】:
上帝,Linq 让我感到困惑……我找到了很多与我需要类似的事情的例子,但我仍然得到了转机。我有一个看起来像这样的表(我们称之为 UngroupedTable)......
ID、Val1、Val2
0001, A, 1
0001, B, 2
0002, C, 3
0003, D, 4
0003, D, 5
我想使用 Linq 构建一个表,其中基本上在 GroupedTable 中,ID 将变得唯一,并且重复 ID 的值将连接到它们各自的行中。
所以,它看起来像这样......
ID、Val1、Val2
0001, A B, 1 2
0002, C, 3
0003, D, 4 5
我们称之为 GroupedTable。
我得到的肯定不是很接近,但我还是会发布它......
from row in passedInTable.AsEnumerable()
group row by new { ID = row.Field<string>("ID"), Val1 = row.Field<string>("Val1"), Val2 = row.Field<string>("Val2") } into groupedRow
select new
{
ID = groupedRow.Key.ID,
Val1 = groupedRow.Key.Val1,
Val2 = groupedRow.Key.Val2
};
我想我现在可以通过一些 for 循环来完成我需要做的事情,但我很确定它可以通过 Linq 实现。特别是基于我看到的所有示例,使用 .sum() 表示数字类型。
编辑
我想最终的问题是,在上面的查询中,我如何从该选择新块中聚合 val1 和 val2 列的值,以便选择连接的值。
【问题讨论】: