У меня есть следующий код LINQ-to-objects, который получает элементы в коллекции в определенном «сложном» порядке:
var items = this.Items.OrderBy(a => a.DisplayType == DisplayType.Integer ? 0 : 1)
.ThenBy(a => a.DisplayType == isplayType.String ? 0 : 1)
.ThenBy(a => a.Name);
Это работает очень хорошо.Тем не менее, я хочу иметь возможность повторно использовать эту «цепочку» без дублирования кода.
Я могу сделать это хорошо, хотя все типы свойств, по которым мы сортируем, одинаковы:
private static Func<Column, int> GetOrderBy()
{
return a => a.DisplayType == FieldDisplayType.Integer ? 0 :
a.DisplayType == FieldDisplayType.String ? 1 : 2;
}
var items = this.Items.OrderBy(GetOrderBy());
но тогда я не вижу, как я могу включить a.Name - потому что тип возвращаемого значения - Func, а Column.Name - строка.
Любая помощь приветствуется.
Том