所以我有一个
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) }
});
}
}
将字符串转换为日期时间格式,但我卡住了如何选择基于日期的最小键/值对。我也不认为这是最简单的方法。
这里有一种方法,按键排序并获得第一个元素。这是有效的,因为键在字典实例中的结构方式,DateTime.ToString("s")
产生一个可排序的日期时间字符串(它的ISO符号),没有必要将其转换为DateTime
类型。SelectMany
将把字典实例平铺成单个集合。使用OrderBy
将按从早到晚的顺序递增。
var result = differences.SelectMany(y => y).OrderBy(x => x.Key).First();
您需要在代码文件的顶部包含using System.Linq;