LinQ& C#中的DataTable Group by Question

时间:2010-12-17 14:39:10

标签: c# linq datatable group-by

我有一个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<string>("Stock Card Code")
                            into grp
                            orderby grp.Key
                            select new { StockCardCode = grp.Key, Quantity = grp.Sum(r => r.Field<decimal>("Quantity")) };

传入:DataTable

2 个答案:

答案 0 :(得分:5)

由于您按StockCardQuote进行分组,因此“Explain”值将是具有相同StockCardQuote的行中的所有Explain值 - 它将是IEnumerable<T>,因此如果Explain是{{ {1}},您将获得string

要在IEnumerable<string>语句中包含此内容,请执行

select

答案 1 :(得分:3)

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

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