Reputation: 339
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.
Upvotes: 5
Views: 809
Reputation: 41757
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);
}
Upvotes: 5