Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 18:42   #1
DerFluch
 
Регистрация: 17.11.2012
Сообщений: 6
Вопрос Сортировка по двум полям по выбору пользователя

Добрый день.
Имеется IQueryable набор данных, у каждого элемента 4 поля Id (int), Title (string), Created (DateTime), Description (string). Требуется отсортировать набор данных по двум полям, при чём поля и направление сортировки заранее неизвестны, их выбирает пользователь. Подскажите, пожалуйста, как это реализовать?
DerFluch вне форума Ответить с цитированием
Старый 17.11.2012, 18:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дать пользователю выбор в меню к примеру
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2012, 19:55   #3
DerFluch
 
Регистрация: 17.11.2012
Сообщений: 6
По умолчанию

Извиняюсь, мой вопрос сформулирован некорректно. Я сделал чтобы названия выбранных столбцов попадали в нужную процедуру как string. Но как огрганизовать непосредственно сортировку? В orderby нужно передать функцию, но из-за разных типов данных полей я не знаю тип ее возвращаемого значения.
DerFluch вне форума Ответить с цитированием
Старый 17.11.2012, 20:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А и не надо - если тип не известен пиши var в качестве типа, и пусть C# сам разбирается
А кстати в лямбде для orderby можно и проверку на переданную строку втюхать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2012, 20:54   #5
DerFluch
 
Регистрация: 17.11.2012
Сообщений: 6
По умолчанию

Поясните, пожалуйста, подробнее. var в качестве типа чего? и как в orderby добавить проверку?
DerFluch вне форума Ответить с цитированием
Старый 17.11.2012, 22:20   #6
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Псевдокод:
Код:
IEnumerable<...> result;
if (selectedField == 1) result = array.OrderBy(entry => entry.Title);
else if (selectedField == 2) result = array.OrderBy(entry => entry.Created);
...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 17.11.2012, 22:31   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Псевдокод:
Вопрос Селестису, как спецу по шарпу:
Код:
var result = array.OrderBy(entry => 
 (selectedField == "Заголовок")?entry.Title:
 (selectedField == "Дата создания")?entry.Created:
 entry.ЧеТамЕщеЗаПоле
);
Я имел ввиду это.
Не проверял, поэтому скажи - так подойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2012, 23:03   #8
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Цитата:
Не проверял, поэтому скажи - так подойдет?
Почти уверен что нет: для передачи в параметр делегат должен быть функтором от того типа, по которому сортировать. А тут у нас string и DateTime => он вероятно даже не сможет преобразовать один тип в другой и не сумеет подобрать тип для генерика Func<Entry,?>.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 17.11.2012, 23:11   #9
DerFluch
 
Регистрация: 17.11.2012
Сообщений: 6
По умолчанию

я бы конечно реализовал такой очевидный вариант, но мне нужно отсортировать по 2-м полям и направления так же могут быть произвольны. 64 варианта описывать if-ми не вариант
DerFluch вне форума Ответить с цитированием
Старый 17.11.2012, 23:14   #10
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Цитата:
отсортировать набор данных по двум полям
А это вообще как? Как можно отсортировать по двум полям???
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
count по двум полям _SERGEYX_ БД в Delphi 3 05.06.2012 17:44
фильтр по двум полям Alex003 Помощь студентам 2 03.12.2011 11:39
поиск по двум полям denisov PHP 4 23.04.2010 21:50
Отбор по двум полям MPa БД в Delphi 4 06.02.2008 20:14
Фильтрация по двум полям Dunkas БД в Delphi 11 21.01.2008 23:59