ASP.NET实体框架,如果为空字符串 - 包含

时间:2016-04-22 07:17:13

标签: c# asp.net entity-framework

我有这样的查询:

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

如果我的字符串(品种或动物)是空的,则找不到任何记录..

即使字符串为空,如何使其工作?

感谢您的回复,最好的问候。

3 个答案:

答案 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();

答案 1 :(得分:0)

Kirill回答的小补充: 检查null(如果愿意)值。

更新

抱歉“动物”不存在。 它应该是:

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

答案 2 :(得分: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();