linq到实体,where子句如何使用?:表达式

linq到实体,where子句如何使用?:表达式,linq,linq-to-entities,Linq,Linq To Entities,TAB\u XXX和TAB\u XXX\u details是一对多关系,我需要查询这两个表,但是我们需要过滤TAB\u XXX\u details 代码如下: 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 == (decim

TAB\u XXX
TAB\u XXX\u details
是一对多关系,我需要查询这两个表,但是我们需要过滤
TAB\u XXX\u details

代码如下:

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.SaleType
是有效的数字,例如1、2、3。。。我想根据这些数字过滤子记录;当
condition.SaleType
null
时,我想查询
TAB_XXX
及其所有子记录

如何修改where子句


谢谢你的回答

由于
1==1
总是
true
,您的情况归结为:

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

本质上,当
条件.SaleType
没有值时,您希望返回所有行;否则,您将与
条件.SaleType.Value

进行比较,因为
1==1
总是
true
,您的条件归结为:

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

本质上,当
条件.SaleType
没有值时,您希望返回所有行;否则,您将与
condition.SaleType.Value

“condition.SaleType是数字?”,什么类型是
number?
@TimSchmelter
公共十进制?SaleType{get;set;}
@TimSchmelter
Condition
是一种查询类“Condition.SaleType是数字?”,什么类型是
number?
@TimSchmelter
公共十进制?SaleType{get;set;}
@TimSchmelter
Condition
是一种查询类