0
두 엔터티간에 필터가 필요합니다. 두 테이블 있음 1. 사용자 2.Product 사용자 테이블이있는 제품 맵.두 엔티티가있는 동적 where 절
동적 필터를 만들 예정입니다.
'테스트'제품이있는 모든 사용자를 찾아야합니다.
조건 : userFilter 개수가 0이면 모든 테스트 제품이 존경받는 사용자에게 필요합니다.
userFilter가 있고 productFilter가있는 경우 아래 코드가 작동하지만 userFilter가없고 productFilter가있는 경우 0 행을 반환합니다. 테스트 제품을 가진 사용자를 어떻게 찾을 수 있습니까? ?
다음은 나의 코드입니다. 내가 올바른 이해한다면
public IHttpActionResult GetFilter()
{
var userFilters = new List<Filter>()
{
new Filter { PropertyName = "Username" ,
Operation = Op .Equals, Value = "Karan" },
};
var productfilter = new List<Filter>()
{
new Filter { PropertyName = "Name" ,
Operation = Op .Equals, Value = "Test product" }
};
Func<User, bool> deleg = x => true;
Func<Product, bool> delegProduct = x => true;
if (userFilters.Count > 0)
{
deleg = ExpressionBuilder.GetExpression<User>(userFilters).Compile();
}
if (productfilter.Count > 0)
{
delegProduct = ExpressionBuilder.GetExpression<Product>(productfilter).Compile();
}
var resultt = _localmarketEntities.Users.Where(deleg)
.Select(x => new
{
x.Id,
x.Username,
Product = x.Products.Where(delegProduct).Select(y => new
{
y.Id,
y.Name
}).ToList()
})
.ToList();
return Ok(resultt);
}
확실하지 때 테스트 제품이있는 모든 사용자가 필요합니다. 메모리에서 모든 필터링을 수행하지 않는 한? 어쨌든 당신이 코드에서'.Where (deleg)'을 제거하면, 필터가없는 것과 같아야하지만, 여전히 아무것도 되돌려주지 않을까요? – Mant101
userFilter가 있으면 deleg을 사용해야합니다. 그래서 거기에 있습니다. 그래서 제거하면 userFilter로 필터링 할 수 없습니다. 이해가 되니? –
"userFilter"가 없다는 것을 의미합니까? – NetMage