2017-05-23 3 views
1

TAB_XXXTAB_XXX_details, 나는 그러나, 우리는 TAB_XXX_details를 필터링 할 필요가, 두 개의 테이블을 조회 할 필요가 일대 다 관계입니다LINQ, where 절을 사용합니까 어떻게?. 표현

코드를 다음과 같다 다음 condition.SaleType이 유효한 숫자 인 경우

var qu = from c in db.TAB_XXX.Where(n => n.DELETE_MARK == false) 
     let dets = c.TAB_XXX_DETAILS.Where(n => condition.SaleType.HasValue ? n.SALE_TYPE == (decimal)condition.SaleType : 1 == 1) 
     select new 
     { 
      c, 
      dets 
     }; 

Condition.SaleTypenumber?이며, 1, 2, 3 ... 나는이 숫자에 따라 자식 레코드를 필터링 할 같은; condition.SaleTypenull 일 때 TAB_XXX과 모든 하위 레코드를 쿼리하려고합니다.

where 절을 어떻게 수정합니까?

답장을 보내 주셔서 감사합니다. 1 == 1 이후

+0

_ "Condition.SaleType은 숫자입니까?"_, 어떤 유형이'number? '입니까? –

+0

@TimSchmelter'public decimal? SaleType {get; 세트; }' – qingyun1029

+0

@TimSchmelter'Condition'은 일종의 쿼리 클래스입니다. – qingyun1029

답변

0

항상 true입니다, 당신의 조건이 아래로 비등 :

let dets = c.TAB_XXX_DETAILS 
    .Where(n => !condition.SaleType.HasValue || n.SALE_TYPE == condition.SaleType.Value) 

을 본질적으로, 당신은 condition.SaleType하지 값을 가지고 할 때 모든 행을 반환 할; 그렇지 않으면 condition.SaleType.Value과 비교합니다.

+0

좋아, 그게 내가 원하는거야. 대단히 감사합니다! – qingyun1029