Linq to sql упорядочить по строке, которая не является свойством объекта - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть модель категории со следующими полями;

ID, Name 

Name поле заполняется файлом ресурса, метод расширения которого у меня называется Translate(int languageID), следующий код явно не работает

IEnumerable<Category> categories = db.Categories.OrderBy(w=>w.Name.Translate(1));

Я хочу упорядочить категории по строке, возвращаемой методом Translate. Как мне этого добиться?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 11 декабря 2011

Поскольку вы использовали переменную с именем db, я предполагаю, что причина, по которой ваш запрос не работает, заключается в том, что это запрос к базе данных, а ваш переводчик запросов к базе данных отказывается переводить ваш метод Translate на язык базы данных. Вы могли бы описать ошибку, которую получаете, и мне не пришлось бы догадываться.

Если мои предположения верны, извлеките записи в память, сначала перечислив запрос, а затем вызовите метод. Как это:

IEnumerable<Category> categories = db.Categories
  .ToList()
  .OrderBy(w=>w.Name.Translate(1)); 
0 голосов
/ 11 декабря 2011

Поскольку свойство Name еще не установлено, вам, возможно, придется создать список с переведенными именами, а затем отсортировать его.

IEnumerable<Category> unsorted = db.Categories.get(); //If get doesn't exist, use whatever method to return the whole list
foreach(var w in unsorted)
{
    w.____ = w.Name.Translate(1); //some property of each category needs to be assigned whatever value this returns
}

IEnumerable categories = unsorted.OrderBy(w => w.Name.Value); //Replace "Value" with whatever stores the actual string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...