我似乎无法弄清楚如何使用基于多个可空变量的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;
答案 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;