gpt4 book ai didi

c# - DataTable 中的分组数据

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:49 26 4
gpt4 key购买 nike

我从 Excel 文件中得到了一个数据表。现在,我想对按 Block、Transplant 和 Variety 分组的数据表的 Quantity1 和 Quantity2 列求和。有可能这样做吗?

这是我从 Excel 文件中获得的数据表:

enter image description here

这是我需要的结果:

enter image description here

最佳答案

这应该可以帮助您入门。请注意,以下代码是在 Linqpad 中编写的,因此 .Dump() 只能在那里工作。您可能应该在生产中用 DateTime 替换 Transplant 类型。为简单起见,我将其保留为字符串。

DataTable dt = new DataTable(); 
dt.Clear();
dt.Columns.Add("Block");
dt.Columns.Add("Transplant");
dt.Columns.Add("Variety");
dt.Columns.Add("Quantity1");
dt.Columns.Add("Quantity2");


object[] r1 = {"A", "04/04/2017", "ROSE", 11, 11};
object[] r2 = {"A", "04/04/2017", "ROSE", 21, 11};
object[] r3 = {"B", "14/04/2017", "MN", 231, 11};
object[] r4 = {"A", "24/04/2017", "GG", 11, 11};
object[] r5 = {"A", "24/04/2017", "GG", 21, 21};

dt.Rows.Add(r1);
dt.Rows.Add(r2);
dt.Rows.Add(r3);
dt.Rows.Add(r4);
dt.Rows.Add(r5);
dt.Dump();

var grouped = dt.AsEnumerable().GroupBy (d => new
{
block = d.Field<string>("Block"),
transplant = d.Field<string>("Transplant"),
variety = d.Field<string>("Variety")
})
.Select(x => new {
Block = x.Key.block,
Transplant = x.Key.transplant,
Variety = x.Key.variety,
//replace ItemArray Index with appropriate values in your code
Q1 = x.Sum(y => int.Parse(y.ItemArray[3].ToString())),
Q2 = x.Sum(y => int.Parse(y.ItemArray[4].ToString())),
});
grouped.Dump();

输出:

enter image description here

第一个表是原始源数据,第二个表显示了从中得出的结果。

关于c# - DataTable 中的分组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43201407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com