LINQ - динамическое предложение orderby не работает - PullRequest
5 голосов
/ 23 февраля 2012

У меня есть такой код:

//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()

Работает нормально, кроме OrderBy.Сгенерированный код SQL не содержит предложения orderby, а записи не сортируются.

Есть идеи?Спасибо за помощь.

Ответы [ 2 ]

5 голосов
/ 23 февраля 2012

OrderBy не изменяет базовые данные - он возвращает перечислимое с соответствующим упорядочением.Вам необходимо присвоить результат обратно магазинам:

if (someCondition) 
{
  shops = shops.OrderBy(shop => shop.distance);
}
else 
{
  shops = shops.OrderBy(shop => shop.p.name);
}
1 голос
/ 23 февраля 2012

попробуйте это:

Shops=shops.OrderBy(distance);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...