Вы можете использовать Linq's Enumerable.SelectMany
для «сглаживания» значений словаря, а затем использовать методы Min
и Max
:
var minDate = errorList.SelectMany(s => s.Value).Min(v => v.Date);
var maxDate = errorList.SelectMany(s => s.Value).Max(v => v.Date);
Однако ваше свойство Date
определяется как строка, вы можете не получить ожидаемых результатов. Обновление определения до DateTime
даст правильные результаты с использованием Min/Max
.
Если вместо этого вы хотите получить Мин / Макс для словаря Key
, вы можете проецировать его в анонимный тип:
var perKeyMinMax = errorList.Select(d => new { d.Key,
Min = d.Value.Min(v => v.Date),
Max = d.Value.Max(v => v.Date)
});
foreach (var item in perKeyMinMax)
{
Console.WriteLine($"Key: {item.Key}, Min: {item.Min}, Max: {item.Max}");
}