2017-05-23 45 views
1

TAB_XXXTAB_XXX_details是一個一對多的關係,我需要查詢兩個表,但是,我們需要過濾TAB_XXX_detailsLINQ到實體,如何在where子句中使用:?表達

代碼如下:

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?,如果condition.SaleType是一個有效的數字,如1,2,3 ...我想篩選基於這些數字子記錄;當condition.SaleTypenull時,我想查詢TAB_XXX及其所有子記錄;

如何修改where子句?

謝謝你的回答!

+0

_「Condition.SaleType是數字嗎?_,什麼類型是數字?' –

+0

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

+0

@TimSchmelter'Condition'是一種查詢類 – qingyun1029

回答

0

由於1 == 1總是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