0

我在 C# .Net 中有一个 EnumerableRowCollection,有两列。我想按第一列分组,然后是第二列,然后计算第二列。

我的 EnumerableRowCollection 基于在 DataGridView 上看起来像这样的 DataTable:

数据网格视图

如果这是一个 MySQL 表,我会像这样实现我想要的:

SELECT `Product Name`, 
       `Upsell Price`, 
       Count(`Upsell Price`) 
  FROM `tblWhatever` 
  GROUP BY `Product Name`, `Upsell Price`;

我在 LINQ 中需要这个等价物

我以编程方式构造了 DataTable,如下所示:

DataTable myDataTable = new DataTabl();
DataColumn myColumn = new DataColumn("My Column");
myDataTable.Columns.Add(myDataTable);
myDataTable.Rows.Add(new object[] { "whatever" });
myDataGridView.DataSource = myDataTable;

我在这里Daniel Schaffer找到了答案,这对我的分组有所帮助,但我被困在计数上,如下所示:

var queryableData = myDataTable.AsEnumerable();
var result = from row in queryableData
          group row by new { ProductName = row["Product Name"], 
                             ProductPrice = row["Product Price"] };

如何编辑我的 LINQ 查询以允许我按第一列分组,然后按第二列分组,然后计算第二列?

4

1 回答 1

1

试试这个 :

var result = from row in queryableData
          group row by new { ProductName = row["Product Name"], 
                             ProductPrice = row["Product Price"] } into grp
          select new { grp.Key.ProductName , 
                       grp.Key.ProductPrice, 
                       Count = grp.Count()  };
于 2012-09-21T09:32:35.397 回答