在条件中按条件分组

SajjadZare

我想按带有订单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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章