C# 如何找到一列的不同值以及另一列的相同值之和?
在我的c WinForm应用程序中,我有一个跟踪水果销售的数据表,如下所示: 现在,我想用相同的水果名称对它们进行过滤,同时得到每种出售水果的总和,创建一个新的结果数据表,如下所示 我怎样才能做到这一点? 我已经找到了不同水果名称的计数C# 如何找到一列的不同值以及另一列的相同值之和?,c#,winforms,linq,datatable,C#,Winforms,Linq,Datatable,在我的c WinForm应用程序中,我有一个跟踪水果销售的数据表,如下所示: 现在,我想用相同的水果名称对它们进行过滤,同时得到每种出售水果的总和,创建一个新的结果数据表,如下所示 我怎样才能做到这一点? 我已经找到了不同水果名称的计数 int distinctCt = TableA.AsEnumerable() .Select(row=>row.Field<string>("Name")) .Distinct().C
int distinctCt = TableA.AsEnumerable()
.Select(row=>row.Field<string>("Name"))
.Distinct().Count();
但我意识到这一切都离不开这里。
有人能告诉我怎么做吗?使用GroupBy和Sum:
您需要使用GroupBy,请尝试以下操作:
var x = TableA.AsEnumerable()
.GroupBy(r=>r.Field<string>("Name"))
.Select(sm => new
{
Name = sm.First().Field<string>("Name"),
QuamtitySold = sm.Sum(q => q.Field<int>("QuantitySold"))
});
查查GroupBy,这会帮你更多的忙。天哪,它就像一个符咒。有一天,我希望能够以最快的速度编写代码片段。非常感谢。
int distinctCt = TableA.AsEnumerable()
.Select(row=>row.Field<string>("Name"))
.Distinct().Count();
var nameGroups = TableA.AsEnumerable().GroupBy(r => r.Field<string>("Name"));
var TableB = TableA.Clone();
TableB.Columns["QuantitySold"].ColumnName = "TotalSold";
foreach(var g in nameGroups)
{
TableB.Rows.Add(g.Key, g.Sum(r => r.Field<int>("QuantitySold")));
}
var x = TableA.AsEnumerable()
.GroupBy(r=>r.Field<string>("Name"))
.Select(sm => new
{
Name = sm.First().Field<string>("Name"),
QuamtitySold = sm.Sum(q => q.Field<int>("QuantitySold"))
});