簡體   English   中英

如何在EF中檢查對象是否為空

[英]How to check if object is null in EF

我是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是否為空,即使它為空,也可以正常工作?

如果s.WarehouseDepot == null則有2種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否則將返回true

2)您希望您的Any返回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條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM