Код: Выделить всё
internal interface IMyClass {
string Letter { get; }
int Number { get; }
}
В настоящее время я использую переключатель (с восходящей логикой внутри каждого случая, как если бы)
Код: Выделить всё
IEnumerable lst = new IMyClass[];//provided as paramater
switch (sortField)
{
case "letter":
if( isAscending ) {
lst = lst.OrderBy( s => s.Letter );
} else {
lst = lst.OrderByDescending( s => s.Letter );
}
break;
case "number":
if( isAscending ) {
lst = lst.OrderBy( s => s.Number );
} else {
lst = lst.OrderByDescending( s => s.Number );
}
break;
}
Вопрос
Как лучше всего передать логическое значение для выбора направления сортировки?
Что у меня есть Попробовал
Я разорвал System.Core.dll и нашел реализации метода расширения OrderBy:
OrderBy:
Код: Выделить всё
public static IOrderedEnumerable OrderBy(
this IEnumerable source,
Func keySelector
){
return new OrderedEnumerable(
source,
keySelector,
null,
false
);
}
Код: Выделить всё
public static IOrderedEnumerable OrderByDescending(
this IEnumerable source,
Func keySelector
){
return new OrderedEnumerable(
source,
keySelector,
null,
true
);
}
Подробнее здесь: https://stackoverflow.com/questions/117 ... -a-boolean