After trying a lot i couldn't get this to work
I have below query:
var query = from citiez in db.cities
join site in db.sites on citiez.city_id equals site.city_id
join ords in db.orders on site.site_id equals ords.site_id
group site by site.site_id into grouped
select new {
sit = grouped.Count(),
cits = grouped.FirstOrDefault().orders
.Where(o => o.site.city.city_name == city)
};
var list = query.ToList();
It works fine but gives Circular reference error. I have searched it but couldn't get this to work in my case
What i am trying to do in SQL is:
SELECT s.site_id, COUNT(o.order_id) TotalOrders
FROM city c
INNER JOIN site s ON c.city_id = s.city_id
INNER JOIN dbo.[order] o ON s.site_id = o.site_id
WHERE c.city_id = 4
GROUP BY s.site_id
The Query returns the desired result in SSMS.
EDIT
This is my Controller Action code:
public ActionResult draw_chart(string city)
{
var query = from citiez in db.cities
join site in db.sites on citiez.city_id equals site.city_id
join ords in db.orders on site.site_id equals ords.site_id
group site by site.site_id into grouped
select new
{
sit = grouped.Count(),
cits = grouped.FirstOrDefault().orders
.Where(o => o.site.city.city_name == city)
};
var list = query.ToList();
return Json(list, JsonRequestBehavior.AllowGet);
}
Any help would be much Appreciated.