LINQ查询具有多个条件where子句

时间:2014-03-04 19:25:29

标签: c# asp.net linq

我似乎无法弄清楚如何使用基于多个可空变量的where子句进行LINQ查询。我已经尝试了我在这个网站上看到的“if”方法,我收到错误:

  

我在当前背景下不存在的名称。

“Point”字段的格式为“POINT(num1,num2)”,在SQL查询中正常工作。

query = from i in _db.ILV
        join p in _db.PC on
             i.PostCode equals p.PostCode                        
        select i;

if (!string.IsNullOrEmpty(key))
    query = query.Where(i = i.Description.Contains(key));

if(!string.IsNullOrEmpty(rng))
    query = query.Where(i => STGeomFromText(i.Point).STDistance(q.Point) <= rng);

if (!string.IsNullOrEmpty(cat))
    query = query.Where(i = i.CategoryID.ToInt(cat));

if(!string.IsNullOrEmpty(sub))
    query = query.Where(i = i.SubCategoryID.ToInt(sub));

return query;

1 个答案:

答案 0 :(得分:2)

如果您使用i =&gt;那将会有效而不是i =。你可以将它全部放在一个块中,如下所示:

query = from i in _db.ILV
        join p in _db.PC on
            i.PostCode equals p.PostCode   
        where (!string.IsNullOrEmpty(key)) ? i.Description.Contains (key) : true &&
              (!string.IsNullOrEmpty(rng)) ? // rest of your where clauses follow the same pattern          
        select i;