在List>其中字典值为字符串形式的日期

本文关键字:string 日期 字符串 字典 选择 Dictionary List 键值对 | 更新日期: 2023-09-27 18:02:54

所以我有一个

IEnumerable<Dictionary<string,string>>

从使用

得到
var differences = activeCalls.Where(l1 => !tempActiveCalls.Any(l2 => l1 == l2));

包含一个id作为键和一个格式化为

的日期
DateTime.ToString("s") 

我想要的是获得具有最早日期的键值对。现在我使用

List<Dictionary<string, DateTime>> minDate = new List<Dictionary<string, DateTime>>();
//convert strings to dates
foreach(var dictionary in differences)
{
    foreach(var kvp in dictionary)
    {
        minDate.Add(new Dictionary<string, DateTime>()
        {
            {kvp.Key, DateTime.ParseExact(kvp.Value,"yyyy'-'MM'-'dd'T'HH':'mm':'ss",null) }
        });
    }
}

将字符串转换为日期时间格式,但我卡住了如何选择基于日期的最小键/值对。我也不认为这是最简单的方法。

在List<Dictionary<string中选择最小键值对,string>>其中字典值为字符串形式的日期

这里有一种方法,按键排序并获得第一个元素。这是有效的,因为键在字典实例中的结构方式,DateTime.ToString("s")产生一个可排序的日期时间字符串(它的ISO符号),没有必要将其转换为DateTime类型。SelectMany将把字典实例平铺成单个集合。使用OrderBy将按从早到晚的顺序递增。

var result = differences.SelectMany(y => y).OrderBy(x => x.Key).First();

您需要在代码文件的顶部包含using System.Linq;