Запрос модели Linq min date max date - PullRequest
2 голосов
/ 12 июля 2020

Я не могу узнать, как получить минимальную дату и максимальную дату из коллекции словарей.

Мой модельный класс выглядит так:

Dictionary<string, IList<ErrorModel>> errorList

public class ErrorModel
{
    public string Date { get; set; }
    public int Total { get; set; }
    public string Description { get; set; }
}

Что я хочу чтобы получить минимальную дату и максимальную дату коллекции.

Надеюсь, что кто-нибудь может мне помочь

1 Ответ

3 голосов
/ 12 июля 2020

Вы можете использовать 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}");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...