我有一个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
答案 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"))}