I have code like this:
//build query
var shops = (from p in dataContext.shops
let distance = dataContext.GetDistance(p.lat, p.lon, nearlat,nearlon)
join c in dataContext.shops_category on p.id equals c.poi_id
select new ShopsModel { p = p, distance = distance }
);
}
//add dynamic orderby
if(somthig)
shops.OrderBy(distance)
else
shops.OrderBy(p.name)
//get records.
return shop.Take(30).ToList()
It's works fine except OrderBy. Generated SQL code does not contains orderby clause and the records are not sorted.
Any Idea? Thanks for help.
OrderBy does not mutate the underlying data - it returns an enumerable with the appropriate ordering. You need to assign the result back to shops:
if (someCondition)
{
shops = shops.OrderBy(shop => shop.distance);
}
else
{
shops = shops.OrderBy(shop => shop.p.name);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With