2017-12-15 6 views
2

条件付きでGroupBy節に列を追加したいが、どうすればよいのか分からない。Entity Framework - 条件付きでグループに列を追加する

ユーザーの入力に応じてグループごとに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

「dynamic」を使用していますか? .GroupBy(p => {Exp.ProductId = p.Product.Id;/*他のフィールド*/return exp;}); ' – JohnyL

答えて

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(); 
+0

私は整数変数の代わりにブール代数変数を持っていると仮定し、どの条件をグループ化する必要がありますか? –

+0

同じロジックを実行できます。そんな感じ;新しい { Bool1 = p.Bool1 == true? p.Bool1:(bool?)null、 Bool2 = p.Bool2 == true? p.Bool2:(bool?)null、 Bool3 = p.Bool3 == true? p.Bool3:(bool?)null、 } – lucky

関連する問題