我有一个如下所示的数据表。我很难创建一种简单的方法来对我列出的行进行分组。我需要能够执行各种计算,例如对一个 id 的所有年份求和、对一年的所有 id 求和或类似的计算。我还需要系统地将一个 id 的所有年份和值分配给一组文本框、变量,或者以某种方式我可以逻辑地访问它们。我想我遇到的最大问题是确定如何转换数据表以及处理我需要做的事情的最佳方法是什么。
当前的
ID Year Value
1 2010 25
1 2010 25
1 2009 30
1 2008 5
1 2008 5
1 2008 5
2 2010 1
2 2010 4
2 2009 0
2 2008 25
2 2008 25
2 2008 25
我想要的是
ID Year Value
1 2010 50
2009 30
2008 15
2 2010 5
2009 0
2008 75
我还不能提交答案,但这就是我想要的更多感谢大家的帮助。
var Groups =
from DataRow row in dataset1.datatable1.Rows
group row by row["id"] into newGroup1
from newGroup2 in
(from row in newGroup1
group row by row["year"]).Distinct()
group newGroup2 by newGroup1.Key;
foreach (var outerGroup in Groups)
{
Console.WriteLine("Level = {0}", outerGroup.Key);
foreach (var innerGroup in outerGroup)
{
Console.WriteLine("Data = {0}", innerGroup.Key);
foreach (var innerGroupElement in innerGroup)
{
Console.WriteLine("\t\t{0}", innerGroupElement["Value"]);
}
}
}
这给了我类似的东西:
ID:1
Year:2008
Value:15
Year:2009
Value:30
Year:2010
Value:50
ID:2
Year:2008
Value:75
Year:2009
Value:0
Year:2010
Value:5