Помощь с Func для Dictionary
Подскажите как должен выглядеть предикат, чтобы его можно было закинуть в OrderBy.
Словарь имеет вид Dictionary<string, List<Person>> data.
Мне нужно отсортировать List<Person> следующим образом: есть какой-то Func<Person, object> predicate, который я должен использовать здесь - data.OrderBy(pair => pair.Value.OrderBy(predicate)). Но он ругается, т.е. предикат не правильный, подскажите как он должен выглядеть.
P.s. пробовал такой: Func<KeyValuePair<string, List<Person>>, Person, object> predicate, используя его так: data.OrderBy(predicate), но это тоже не то.
Ответы (1 шт):
OrderBy принимает функцию, в которой тип первого параметра совпадает с типом элемента коллекции, а возвращаемое значение - это значение которое будет сравниваться при сортировке.
Если у тебя есть словарь Dictionary<string, List<Person>> data а отсортировать нужно List<Person>, то OrderBy нужно вызывать не у data, а у конкретного элемента словаря.
В этом случае функция должна принимать Person и возвращать какое-то значение, которое можно использовать для сравнения, например Func<Person, int> → person => person.Age
И вызывать для конкретного элемента: data[key].OrderBy(person => person.Age)