LinQ和DataTable Group在C#中的问题

Ser*_*glu 2 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")) };
Run Code Online (Sandbox Code Playgroud)

传入:DataTable

Jay*_*Jay 5

由于您通过StockCardQuote进行分组,因此"Explain"值将是具有相同StockCardQuote的行中的所有Explain值 - 它将是一个IEnumerable<T>,所以如果Explain是a string,您将获得IEnumerable<string>.

要在你的select陈述中包括这一点,就这样做

select new { 
    StockCardCode = grp.Key, 
    Quantity = grp.Sum(r => r.Field<decimal>("Quantity")),
    Explanations = grp.Select(r => r.Field<string>("Explain")) };
Run Code Online (Sandbox Code Playgroud)