Задача на делегат Predicate<T>

Вот задача:
Дан фрагмент программы:
Dictionary<string, int> dict = new Dictionary<string, int>()
{
{"four",4 },
{"two",2 },
{ "one",1 },
{"three",3 },
};
var d = dict.OrderBy(delegate(KeyValuePair<string,int> pair) { return pair.Value; });
foreach (var pair in d)
{
Console.WriteLine("{0} - {1}", pair.Key, pair.Value);
}
а) Сверните обращение к OrderBy с использованием лямбда выражения
б) Разверните обращение к OrderBy с использованием делегата Predicate<T>
Перерыл форумы в инете и пообщался прогерами. Походу пунк б) поставлен не корретно.
Какие мнения? Или задачка решаема?
27 августа 2019 в 15:00