我正在为一个可以设置区域和城市的网站制作一些过滤器,但我只想显示有产品的区域和城市,但城市部分给了我错误的结果。我首先在普通的 MySql 中进行查询,效果很好:
SELECT b.city, COUNT(b.city)
FROM ads AS a
JOIN locations AS b ON b.id = a.locations_id
JOIN areas AS c ON c.id = b.areas_id
WHERE
a.title LIKE '% mini' OR
a.title LIKE '% mini %' OR
a.title LIKE 'mini %' AND
c.id = '7ea21f5b-5c75-11e1-8809-4061869766cd'
GROUP BY b.city
Linq 到实体:
var query = (from a in db.ads
join b in db.locations on a.locations_id equals b.id
join c in db.areas on b.areas_id equals c.id
where
a.title.Contains(" " + searchQuery) ||
a.title.Contains(" " + searchQuery + " ") ||
a.title.Contains(searchQuery + " ") &&
c.id.Equals(area)
select new {
b.city
}).OrderBy(x => x.city).GroupBy(x => x.city).ToList();
return jsonOutputString.Serialize(query);
实体查询的 linq 仅返回所有城市,不关心区域过滤器
最佳答案
尝试这样的事情
var query = (from a in db.ads
join b in db.locations on a.locations_id equals b.id
join c in db.areas on b.areas_id equals c.id
where
(a.title.Contains(" " + searchQuery) ||
a.title.Contains(" " + searchQuery + " ") ||
a.title.Contains(searchQuery + " ")) &&
b.areas_id.Equals(area)
select new
{
b.city
}).OrderBy(x => x.city).GroupBy(x => x.city).ToList();
关于c# - linq to entity 中的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19139344/