2016-04-27 13 views
-1

私はEFを初めて使いこなし、小さなプロジェクトをしようとしています。私はEFに条件を追加しましたが、問題があります。 私の条件は EFでオブジェクトがnullであるかどうかを確認する方法

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時々あるかもしれない....ここ SELECT * FROM table1 WHERE col1 IN (1,2,3...)

は私のEFで、すべてのSQLのような条件では約ですが、それがnullの場合、このクエリはスロー例外。

s.WarehouseDepotがヌルで、ヌルであっても動作するようにするにはどうすればよいですか?

+0

これを適用することができます: "var res3 = res2.Where(l =>!slitDetail.Any(s => s.BlockId == l.Id && s.WarehouseDepot!= null &&(s.WarehouseDepot.WarehouseDepotName! = "AraÜrünDepo" && s.WarehouseDepot.WarehouseDepotName!= "ÖzelKesim Depo"))));) –

+1

これはEFクエリーですか?すなわち 'res2'と' slitDetail'は 'IQueryable'ですか? NREはLINQ to Objectsクエリを示します。そして、他のC#コードで 'null'をチェックするのと同じ方法で' null'をチェックできます。実際にはEFクエリでもそうすることができます。 –

+1

あなたの 'Any'節に' && s.WarehouseDepot!= null'を追加するのはどうですか? – bit

答えて

1

あなたのAnyあなたはそれが価値を持っている場合にのみ、これはs.WarehouseDepotを使用することになり

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)); 

のようなものを使用することができ、その場合には、trueを返すようにしたいs.WarehouseDepot == null

1)場合の2つのpossiblitiesがあります。それ以外の場合はtrueを返します

2)Anyfalseを返すようにします。この場合、あなたは、単に上記の式でfalsetrueを交換するか、

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条件を検討することに注意してくださいのようなものを使用することができます。

関連する問題