Сначала я использовал:
sortedList = unsorted.AsParallel().OrderBy(myItem => TypeDescriptor.GetProperties(myItem)[firstSort.Item2].GetValue(myItem));
Где firstSort.Item2 - строковое имя свойства. Однако производительность значительно снизилась, так как количество элементов в несортированном списке увеличилось. (Как я и ожидал)
Есть ли способ сделать это без использования отражения?
Подход грубой силы должен был сделать что-то вроде:
if(firstSort.Item2 == "Size")
sortedList = unsorted.AsParallel().OrderBy(myItem => myItem.Size);
else if(firstSort.Item2 == "Price")
sortedList = unsorted.AsParallel().OrderBy(myItem => myItem.Price);
...
Я ищу что-то, что могло бы выполнить вышеуказанное поведение, но без необходимости жестко кодировать все различные свойства интерфейса.