2017-12-15 16 views
2

조건부로 GroupBy 절에 열을 추가하고 싶지만 어떻게 완료 할 수 있는지 잘 모르겠습니다.Entity Framework - 조건부로 그룹에 열 추가

사용자 입력에 따라 그룹별로 추가하고자하는 5 개의 열이 있습니다. 이렇게하려면 다음 속성이 있습니다 :

ProductId 
ColorId 
PieceId 
SizeId 
WeightId 

속성 값이 0보다 큰 경우이 열은 group by 절에서 사용해야합니다.

그래서 제품 ID, ColorId 및 PieceId에 의해 그룹이 있어야 다음과 같은 이상이 0보다 큰 값이있는 경우 :

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

아마도 '동적 인'? '.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