我在数据表中有三列:字符串、日期时间和小数。我想按字符串和小数列分组,对于分组的行,我想对小数值求和。我知道如何求和,但如何将数据表中的两个不同列分组?
这是我目前无法正常工作的代码:
var newSort = from row in objectTable.AsEnumerable()
group row by new {ID = row.Field<string>("resource_name"), time1 = row.Field<DateTime>("day_date")} into grp
orderby grp.Key
select new
{
resource_name1 = grp.Key.ID,
day_date1 = grp.Key.time1,
Sum = grp.Sum(r => r.Field<Decimal>("actual_hrs"))
};
最佳答案
我认为您没有向我们讲述完整的故事。除了 orderby
不使用匿名类型(您提供的代码不会编译)之外,您的查询应该按照您想要的方式工作。我只是把它放在 LINQPad 中:
var objectTable = new DataTable();
objectTable.Columns.Add("resource_name",typeof(string));
objectTable.Columns.Add("day_date",typeof(DateTime));
objectTable.Columns.Add("actual_hrs",typeof(decimal));
objectTable.Rows.Add(1, DateTime.Today, 1);
objectTable.Rows.Add(2, DateTime.Today, 2);
var newSort = from row in objectTable.AsEnumerable()
group row by new {ID = row.Field<string>("resource_name"), time1 = row.Field<DateTime>("day_date")} into grp
select new
{
resource_name1 = grp.Key.ID,
day_date1 = grp.Key.time1,
Sum = grp.Sum(r => r.Field<Decimal>("actual_hrs"))
};
newSort.Dump();
...我得到了这些结果:
resource_name1 | day_date1 | Sum
1 | 7/1/2011 12:00:00 AM | 1
2 | 7/1/2011 12:00:00 AM | 2
关于c# - c# 使用 linq 对数据表中的多列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551447/