我想按带有订单ID的表进行分组,但是如果价格之一为负,则不要按分组并在输出中显示所有行
我使用以下代码,但按所有订单ID分组
tblResult = tblResult.AsEnumerable().GroupBy(r => new { orderId = r["OrderID"] }).Select(g =>
{
var row = tblResult.NewRow();
row["Order ID"] = g.Key.orderId;
row["Price"] = g.Sum(r => float.Parse(r.Field<string>("Price"))).ToString();
return row;
}).CopyToDataTable();
您可以在分组中创建条件,棘手的部分是结果将是价格为负数的商品的清单,而价格为负数的商品的清单。如果我们也将单个项目作为列表,则SelectMany()
应该执行您想要的操作:
var result = list.GroupBy(x => x.Id)
.SelectMany(g => g.Any(x => x.Price < 0)?
g.ToList():
new List<Order> { new Order { Id = g.Key, Price = g.Sum(grp => grp.Price)}});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句