아래 예제 모델에서 소유자의 속성으로 ITEMS를 쿼리해야합니다. 이것은 Entity Frameworks 집합이며 LINQ를 사용하여이 작업을 수행하려고합니다.PredicateBuilder를 적용하여 항목 목록의 단일 개체 속성 쿼리
public class Owner
{
public int Id { get; set; }
public string Name { get; set; }
//More than 20 other properties
}
class Item
{
public int Id { get; set; }
public string Description { get; set; }
public Owner MyOwner { get; set; }
public int idOwner { get; set; }
//Several others properties
}
나는 소유자의 필터가 이미 PredicateBuilder입니다.
Owner
개체에이 술어 (기본적으로 where 절의 내용)를 적용하여 소유자가 조건 자 조건을 충족하는 모든 Item
을 얻고 싶습니다.
Owner
은 소유자의 목록이 있다면 ... 나는 .Any(predicate)
를 사용할 수 있지만 기본은 1
편집 : 나는 모든 얻을 것을 피하기 위해이 작업을 수행하기 위해 노력하고있어
조건 자 조건을 충족하는 Owners
을 입력 한 다음 Contains(idOwner)
을 수행하십시오.
db.Items.Where(c => OwnerIdsCollection.Contains(c.idOwner ?? 0));
나는 심지어 Items
관련하지 소유자를위한 후드 작성 masive SQL 사례를 보았다.
EDIT 2 - 술어 :
public static Expression<Func<Owner, bool>> GetPredicate(OwnerCriteria criteria)
{
var predicate = PredicateBuilder.True<Owner>();
if (criteria.Active.HasValue) {
predicate = predicate.And(p => p.Active == criteria.Active.Value);
}
//Several other criateria checkings as above
return predicate;
}
기준은 사용자 필터로부터 얻어진다. 그런 다음 일반적으로 소유자 컬렉션을 쿼리하는 데 사용합니다. db.Owners.Where(predicate)
; db.Items.Where(x => /*Items filters*/ && x.MyOwner.Where(myOwnerPredicate))
는'소유자 : 당신의 편집 2에
을 바탕으로
이제는 개념적으로, 내가 좋아하는 뭔가를 할 필요가 'Item'에 'int'가 아닌'Owner' 타입의 속성이 있습니까? –
소유자가 소유자 유형이며 실수였습니다. 나는 그것을 고쳤다. – Romias