0

地域と都市を設定できるサイトにいくつかのフィルターを作成していますが、製品がある地域と都市のみを表示したいのですが、都市の部分で間違った結果が得られます。最初にプレーン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

エンティティへのリンク:

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 to entity クエリはすべての都市を返すだけで、エリア フィルターは気にしません。

4

1 に答える 1

1

このようなことを試してください

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();
于 2013-10-02T14:28:36.087 に答える