У меня есть следующий класс, определенный в C #
class myClass<T,U>
{
public T PropertyOne { get; set; }
public U PropertyTwo { get; set; }
}
Мне нужно написать функцию, которая переупорядочивает список объектов myClass и принимает два других параметра, которые определяют, как я делаю эту перестановку: зависит ли моя переупорядоченностьна PropertyOne или PropertyTwo, и это по возрастанию или по убыванию.Допустим, эти два параметра являются логическими.Имея текущие знания в LINQ, я бы написал:
public IList<myClass<T,U>> ReOrder(IList<myClass<T,U>> myList, bool usePropertyOne, bool ascending)
{
if (usePropertyOne)
{
if (ascending)
{
return myList.OrderBy(o => o.PropertyOne).ToList();
}
else
{
return myList.OrderByDescending(o => o.PropertyOne).ToList();
}
}
else
{
if (ascending)
{
return myList.OrderBy(o => o.PropertyTwo).ToList();
}
else
{
return myList.OrderByDescending(o => o.PropertyTwo).ToList();
}
}
}
Что может быть более эффективным / элегантным способом сделать это?Как я могу объявить объект Func, TResult> keySelector для повторного использования при вызове OrderBy или OrderByDescending?Я заинтересован в ответе, поскольку в моей реальной жизни у меня может быть более двух свойств.