我想有条件地将列添加到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 });
答案 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();