C#过滤数据表并计算
我正在用数据表编写一个C#代码 该表如下所示: ID区域第1天第2天第3天第4天 a 10.10.1 0.1 0.1 0.1 b 10.10.1 0.1 0.1 0.1 c 10.10.1 0.1 0.1 0.1 d 20.1 0.1 0.1 0.1 0.1 E20.10.1 0.1 0.1 0.1C#过滤数据表并计算,c#,filter,datatable,C#,Filter,Datatable,我正在用数据表编写一个C#代码 该表如下所示: ID区域第1天第2天第3天第4天 a 10.10.1 0.1 0.1 0.1 b 10.10.1 0.1 0.1 0.1 c 10.10.1 0.1 0.1 0.1 d 20.1 0.1 0.1 0.1 0.1 E20.10.1 0.1 0.1 0.1 我想用区号过滤数据表,并将同一区域中的行相加?实现此功能的好方法是什么?这很简单。按区号过滤,按区域分组,然后汇总所有天数: DataTable table = new DataTable(); t
我想用区号过滤数据表,并将同一区域中的行相加?实现此功能的好方法是什么?这很简单。按区号过滤,按区域分组,然后汇总所有天数:
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(string));
table.Columns.Add("Area", typeof(int));
table.Columns.Add("Day1", typeof(double));
table.Columns.Add("Day2", typeof(double));
table.Columns.Add("Day3", typeof(double));
table.Columns.Add("Day4", typeof(double));
table.Rows.Add("a", 1, 0.1, 0.1, 0.1, 0.1);
table.Rows.Add("b", 1, 0.1, 0.1, 0.1, 0.1);
table.Rows.Add("c", 1, 0.1, 0.1, 0.1, 0.1);
table.Rows.Add("d", 2, 0.1, 0.1, 0.1, 0.1);
table.Rows.Add("e", 2, 0.1, 0.1, 0.1, 0.1);
var result = table.AsEnumerable().Where (t => t.Field<int>("Area") == 1)
.GroupBy (t => t.Field<int>("Area"))
.Select(x => new {
Area = x.Key,
Day1 = x.Sum (y => y.Field<double>("Day1")),
Day2 = x.Sum (y => y.Field<double>("Day2")),
Day3 = x.Sum (y => y.Field<double>("Day3")),
Day4 = x.Sum (y => y.Field<double>("Day4"))
});
result.Dump();
DataTable=newdatatable();
表.Columns.Add(“ID”,typeof(string));
表.列.添加(“面积”,类型(int));
表.列.添加(“第1天”,类型(双));
表.列.添加(“第2天”,类型(双));
表.列.添加(“第3天”,类型(双));
表.列.添加(“第4天”,类型(双));
表.行.添加(“a”、1、0.1、0.1、0.1、0.1);
表.行.添加(“b”,1,0.1,0.1,0.1,0.1);
表.行.添加(“c”,1,0.1,0.1,0.1,0.1);
表.行.添加(“d”、2、0.1、0.1、0.1、0.1);
表.行.添加(“e”、2、0.1、0.1、0.1、0.1);
var result=table.AsEnumerable()。其中(t=>t.Field(“Area”)==1)
.GroupBy(t=>t.Field(“区域”))
.选择(x=>new{
面积=x.键,
第1天=x.总和(y=>y.字段(“第1天”),
第2天=x.总和(y=>y.字段(“第2天”),
第3天=x.总和(y=>y.字段(“第3天”),
第4天=x.总和(y=>y.字段(“第4天”))
});
result.Dump();
输出:
Linqpad资料来源:
参考资料: