LinQ和DataTable Group在C#中的问题

我有一个DataTable并存储4列(StockCardCode,Explain,Quantity,BranchCode),并使用LinQ对它们进行分组。 代码是我使用Group By的关键。 当我编写查询时,我只能在select语句中使用2列,如何在此查询中显示所有列? 这个查询返回2列。 例如,我无法在查询中使用x.Field(“Explain”)。

var query = from s in incoming.AsEnumerable() group s by s.Field("Stock Card Code") into grp orderby grp.Key select new { StockCardCode = grp.Key, Quantity = grp.Sum(r => r.Field("Quantity")) }; 

传入:DataTable

由于您通过StockCardQuote进行分组,因此“Explain”值将是具有相同StockCardQuote的行中的所有Explain值 – 它将是IEnumerable ,因此如果Explain是一个string ,您将获取IEnumerable

要在select语句中包含它,请执行此操作

 select new { StockCardCode = grp.Key, Quantity = grp.Sum(r => r.Field("Quantity")), Explanations = grp.Select(r => r.Field("Explain")) }; 

您的论坛中没有唯一项目,但您可以选择第一项并显示字段:

  select new { StockCardCode = grp.Key, Quantity = grp.Sum(r => r.Field("Quantity")), Explain = grp.First().Select(x=>x.Field("Explain"))}