2013-11-15 4 views
0

Нужно немного помочь здесь с некоторыми запросами Linq.список сортировки по пользовательскому фильтру string.contains

Я пытаюсь составить список в индивидуальном порядке, который я могу выполнить для двух параметров, которые я пытаюсь сортировать, но третий выглядит намного сложнее.

То, что я на данный момент:

return this.currentDocuments.OrderByDescending(x => x.Created).ThenBy(x => x.Description).toList(); 

Теперь мне нужно добавить третий параметр, который устанавливается строкой в ​​поле XML. У меня есть поле, которое представляет собой только строку букв, и для определения порядка нужно использовать последние две буквы строки.

Может ли кто-нибудь просветить меня о том, как я это сделаю? это что-то, что можно сделать с Linq или мне нужно написать отдельный метод для этого?

Кроме того, есть 9 различных вариантов, доступных для вывода в двух последних строках строки, поэтому мне нужно найти самый простой способ работы со всеми параметрами.

Любые советы/указатели/помощь оцениваются и извиняются, если это массовый вопрос n00b .., но все мы должны как-то учиться!

Спасибо.

+1

вы должны изучить динамический linq –

+0

Ваш вопрос немного неясен. Что вы подразумеваете под «строкой в ​​поле XML»? Где поле XML? –

+0

Извините, поле находится в XML файле в тегах . Надеюсь, что это немного лучше. – user2039317

ответ

0

Как предложил Йенс Клистер, вы должны посмотреть на Dynamic Linq для этой проблемы.

Отметьте это сообщение для примеров и кода. Единственное ограничение заключается в том, что вы должны использовать IQueryable<T> вместо IEnumerable<T>, но это может и не быть проблемой.

Ваш код будет выглядеть примерно так:

var sortingCodeToSortField = new Dictionary<string,string> 
    { {"ei", "EmployeeId"}, {"na", "Name"}, {"ag", "Age" } }; 

string sortCode = GetSortCodeFromXml(inputXml); 
string fieldToSortOn = sortingCodeToSortField[sortCode]; 

var whatYouHaveSoFar = this.currentDocuments.OrderByDescending(x => x.Created).ThenBy(x => x.Description); 

var whatYouWant = whatYouHaveSoFar.AsQueryable.OrderBy(fieldToSortOn); 

return whatYouWant.ToList(); 

Библиотека Dynamic Linq может быть немного бестолковый; не забудьте проверить страницу html, которая поставляется с загрузкой, поскольку у нее есть более качественная документация, чем сообщение Скотта Гу. Удачи и не стесняйтесь спрашивать, если я что-то неправильно понял.

Смежные вопросы