2012-02-17 2 views
1

술어를 사용해야하는 검색 기능을 구축하는 중입니다. 그러나, 내가 아래의 쿼리를 실행할 때마다 나는 마지막 술어의 결과 만 얻는다. 첫 번째 결과는 포함되지 않습니다. 아래 내 쿼리를 기반으로 누구든지 올바른 방향으로 나를 가리킬 수 있습니다.술어를 사용하는 Entity Framework

var _predicate = PredicateBuilder.False<TBLDESIGN>(); 

_predicate = _predicate.Or(a => (a.KEYWORDS.Contains('red') || a.NAME.Contains('red'))); 

_predicate = _predicate.Or(a => (a.KEYWORDS.Contains('blue') || a.NAME.Contains('blue'))); 


       var results = dbContext.TBLDESIGN 
          .Include(s => s.TBLCOLLECTION) 
          .Include(s => s.LKPRICE) 
          .Include(s => s.TBLDESIGNER) 
          .AsExpandable().Where(_predicate) 
          .OrderByDescending(s => s.DATE_APPROVED) 
          .Select(s => new 
          { 
           s.ACTIVE, 
           s.DATE_CREATED, 
           s.EXPORTED, 
           s.IMAGE_PATH, 
           DesignId = s.ID, 
           s.IS_APPROVED, 
           s.TBLDESIGNER.FIRST_NAME, 
           s.TBLDESIGNER.LAST_NAME, 
           s.TBLDESIGNER.ALIAS, 
           s.NAME, 
           s.LKPRICE.PRICE, 
           s.COMPLETED, 
           s.DATE_APPROVED, 
           DesignerId = s.TBLDESIGNER.ID, 
           s.VIEW_COUNT 
          }).ToList(); 

이 쿼리는 빨간색이나 이름이 포함 빨간색 또는 키워드 포함 청색 또는 이름이 들어있는 파란색을 포함하는 키워드를 가지고있는 디자인을 철수 할 예정이다.

현재이 시나리오에서는 첫 번째 조건자를 무시하고 파란색 값만 반환합니다. 당신의 도움, 빌리

답변

1

에 대한

덕분에 어쩌면이 솔루션을 밤은,하지만 당신은 다음과 같은 조건을 분할하려고 할

+0

아니, 내가 몇 가지 변화가 아니라 그것을 시도

var _predicate = PredicateBuilder.False<TBLDESIGN>(); _predicate = _predicate.Or(a => a.KEYWORDS.Contains('red')); _predicate = _predicate.Or(a => a.NAME.Contains('red'))); _predicate = _predicate.Or(a => a.KEYWORDS.Contains('blue')); _predicate = _predicate.Or(a => a.NAME.Contains('blue'))); 
퍼져 나갔다. 나는 그것을 한 번 줄 것이고 당신에게 알려줄 것이다. 답장을 보내 주셔서 감사합니다. –

+0

이것은 올바른 방향으로 나아가는 것처럼 보이지만, 키워드가 비어 있고 이름에 여전히 'red'가 포함되어 있으면 그 레코드가 반환되지 않습니다. –

+0

마지막 코멘트 무시 ... –