我是EF的新手并尝试用它做一个小项目。我给EF添加了一个条件,但我遇到了问题。
我的条件是关于IN的条件,如SQL,
SELECT * FROM table1 WHERE col1 IN (1,2,3...)
这是我的EF ......
var res3 = res2.Where(l => !slitDetail
.Any(s => s.BlockId == l.Id
&& s.WarehouseDepot.WarehouseDepotName != "Ara Ürün Depo"
&& s.WarehouseDepot.WarehouseDepotName != "Özel Kesim Depo"));
s.WarehouseDepot
有时可能为NULL,这是正常的,但如果为null,则此查询会抛出异常。
如何检查s.WarehouseDepot
是否为空并使其工作即使它为空?
答案 0 :(得分:1)
如果s.WarehouseDepot == null
1)您希望Any
返回true
,在这种情况下,您可以使用类似
var res3 = res2.Where(l => !slitDetail
.Any(s => s.BlockId == l.Id
&& s.WarehouseDepot != null
? (s.WarehouseDepot.WarehouseDepotName != "Ara Ürün Depo" && s.WarehouseDepot.WarehouseDepotName != "Özel Kesim Depo")
: true));
仅当s.WarehouseDepot
有值时才使用Any
,否则返回true
2)您希望false
返回true
。在这种情况下,您只需在上面的表达式中替换false
var res3 = res2.Where(l => !slitDetail
.Any(s => s.BlockId == l.Id
&& s.WarehouseDepot != null
&& s.WarehouseDepot.WarehouseDepotName != "Ara Ürün Depo"
&& s.WarehouseDepot.WarehouseDepotName != "Özel Kesim Depo"));
或使用类似
s.BlockId == l.Id
请注意,这两个结果都会自动考虑{{1}}条件。