2016-04-22 53 views
0

我有這樣的查詢:ASP.NET實體框架,如果空字符串 - 包含

var listAds = (from a in _db.Ads 
          where 
          a.Animal.Contains(animal) && 
          a.AnimalBreed.Contains(breed) && 
          GeoCodeCalc.CalcDistance(a.X, a.Y, 51.919438, 19.145136) <= distance 
          select a).ToList(); 

如果我的字符串(品種或動物)爲空,則找不到任何記錄..

如何即使字符串爲空也能使其工作?

感謝您的回覆,最好的問候。

回答

0

小除了基里爾的回答是: 檢查空(如果會)值了。

更新:

對不起「動物」不存在。 它應該是:

var listAds = (from a in _db.Ads 
          where 
          (a.Animal.Contains(animal)|| string.IsNullOrEmpty(a.Animal)) &&      (a.AnimalBreed.Contains(breed)||string.IsNullOrEmpty(a.AnimalBreed)) && 
          GeoCodeCalc.CalcDistance(a.X, a.Y, 51.919438, 19.145136) <= distance 
          select a).ToList(); 
+0

發生未處理的異常:未將對象引用設置爲對象的實例。 :( –

+0

我的動物是?動物= - 多數民衆贊成在它 –

0

試試這個:

var listAds = (from a in _db.Ads 
          where 
          (a.Animal.Contains(animal)||animal=="") && 
          (a.AnimalBreed.Contains(breed)||animal=="") && 
          GeoCodeCalc.CalcDistance(a.X, a.Y, 51.919438, 19.145136) <= distance 
          select a).ToList(); 
+0

謝謝你的回答但是相同.. –

0

如果我正確

如果我的字符串(品種或動物)爲空,則找不到任何記錄瞭解..

那麼你可以做如下面的代碼片段

var listAds = (from a in _db.Ads 
          where 
          (animal != string.Empty && breed != string.Empty) && 
          a.Animal.Contains(animal) && 
          a.AnimalBreed.Contains(breed) && 
          GeoCodeCalc.CalcDistance(a.X, a.Y, 51.919438, 19.145136) <= distance) 
          select a).ToList();