linq to entity,where子句如何使用?:Expression

时间:2017-05-23 09:39:39

标签: linq linq-to-entities

TAB_XXXTAB_XXX_details是一对多关系,我需要查询这两个表格,但是,我们需要过滤TAB_XXX_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.SaleTypenumber?,如果condition.SaleType是有效数字,例如1,2,3 ......我想根据这些数字过滤子记录;当condition.SaleTypenull时,我想查询TAB_XXX及其所有子记录;

如何修改where子句?

感谢您的回答!

1 个答案:

答案 0 :(得分: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进行比较。