C# 如何找到一列的不同值以及另一列的相同值之和?

C# 如何找到一列的不同值以及另一列的相同值之和?,c#,winforms,linq,datatable,C#,Winforms,Linq,Datatable,在我的c WinForm应用程序中,我有一个跟踪水果销售的数据表,如下所示: 现在,我想用相同的水果名称对它们进行过滤,同时得到每种出售水果的总和,创建一个新的结果数据表,如下所示 我怎样才能做到这一点? 我已经找到了不同水果名称的计数 int distinctCt = TableA.AsEnumerable() .Select(row=>row.Field<string>("Name")) .Distinct().C

在我的c WinForm应用程序中,我有一个跟踪水果销售的数据表,如下所示:

现在,我想用相同的水果名称对它们进行过滤,同时得到每种出售水果的总和,创建一个新的结果数据表,如下所示

我怎样才能做到这一点? 我已经找到了不同水果名称的计数

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"))
            });