【问题标题】:Linq min date max date model queryingLinq min date max date 模型查询
【发布时间】:2020-11-01 15:53:32
【问题描述】:

我不知道如何从字典集合中获取最小日期和最大日期。

我的模型类如下所示:

Dictionary<string, IList<ErrorModel>> errorList

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

我想要做的是获取集合的最小日期和最大日期。

希望有人能帮帮我

【问题讨论】:

    标签: c# .net linq querying


    【解决方案1】:

    您可以使用 Linq 的 Enumerable.SelectMany 来“扁平化”字典值,然后使用 MinMax 方法:

    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}");
    }
    

    【讨论】:

    • 感谢您的回复。我回家后会测试它。并接受您的建议并将日期属性更改为日期时间
    猜你喜欢
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2023-03-12
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    相关资源
    最近更新 更多