所以我有一个
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) }
});
}
}
将字符串转换为日期时间格式,但我仍然坚持如何根据日期选择最小键/值对。我也不认为这是最简单的方法。任何帮助表示赞赏。
答案 0 :(得分:2)
这是一种方法,按键排序并获取第一个元素。这是因为密钥在字典实例中的结构方式,DateTime.ToString("s")
生成一个可排序的日期时间字符串(其ISO表示法),无需将其转换为DateTime
类型。 SelectMany
会将字典实例展平为单个集合。使用OrderBy
将按升序排序(最早到最晚)。
var result = differences.SelectMany(y => y).OrderBy(x => x.Key).First();
您需要在代码文件的顶部加入using System.Linq;
。