实体框架 - 有条件地将列添加到group by中

时间:2017-12-15 07:30:53

标签: c# entity-framework linq

我想有条件地将列添加到GroupBy子句中,但我不确定它是如何完成的。

根据用户的输入,我想在group by语句中添加5列。为此,我有以下属性:

ProductId
ColorId
PieceId
SizeId
WeightId

如果任何属性的值大于0,则需要在group by子句中使用此列。

因此,如果ProductId,ColorId和PieceId的值大于0,则应该按以下方式分组:

list.GroupBy(p => new { p.Product.Id, p.ColorId, p.PieceId });

1 个答案:

答案 0 :(得分:2)

尝试类似的东西;

var groupedList = list.GroupBy(p => new
{
    ProductId = p.Product.Id > 5 ? p.Product.Id : (int?)null,
    ColorId = p.ColorId > 5 ? p.ColorId : (int?)null,
    PieceId = p.PieceId > 5 ? p.PieceId : (int?)null
})
.Select(x =>
new
{
    x.Key.ProductId,
    x.Key.ColorId,
    x.Key.PieceId
}).ToList();