Вы можете переместить свой переключатель за пределы OrderByDescending
метода. Просто определите лямбду как Func<SomeObject, float>
и назначьте ее перед запросом linq:
Func<SomeObject, float> orderBy = null;
switch (cond)
{
case "conditionA":
orderBy = i => (float)i.MemberA;
break;
case "conditionB":
orderBy = i => (float)i.MemberB;
break;
default:
orderBy = i => (int)i.MemberC;
break;
}
Теперь вы можете использовать эту лямбду в сортировке
var res = items.OrderByDescending(orderBy);
Если items
равно IQueriable
, вы можете изменить Func<...>
на Expression<Func<...>>