2017-05-23 3 views
1

TAB_XXXTAB_XXX_detailsは1対多の関係です、私は、しかし、我々はTAB_XXX_detailsをフィルタリングする必要がある、2つのテーブルを照会する必要がLINQ、どのようにwhere句の使用が行われます。?式

コード。次のとおりです。condition.SaleTypeは、1、2、3として有効な数値である場合、

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.SaleTypeは、私はこれらの数字に基づいて、子レコードをフィルタリングしたい...、number?です。 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

関連する問題