我有一个字典列表,我希望它按日期键降序排序。但是以下查询给出了不恰当的结果。请帮忙。
日期格式为DD / MM / YYYY
List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
Dictionary<string, string> dict1 = new Dictionary<string, string>();
dict1["Date"] = "01/03/2015";
dict1["Name"] = "bbb";
list.Add(dict1);
Dictionary<string, string> dict2 = new Dictionary<string, string>();
dict2["Date"] = "11/08/2014";
dict2["Name"] = "ccc";
list.Add(dict2);
Dictionary<string, string> dict3 = new Dictionary<string, string>();
dict3["Date"] = "21/03/2014";
dict3["Name"] = "aaa";
list.Add(dict3);
Dictionary<string, string> dict4 = new Dictionary<string, string>();
dict4["Date"] = "01/01/2015";
dict4["Name"] = "ddd";
list.Add(dict4);
var ordered = list.OrderBy(x => x["Date"]);
答案 0 :(得分:4)
每个词典中的Date
条目都是一个字符串,List
对如何根据日期排序规则对字符串进行排序一无所知。
一个(可怕的)选项是在订购时将每个字符串转换为适当的日期
var ordered = list.OrderBy(x => DateTime.ParseExact( x["Date"], "dd/MM/yyyy", CultureInfo.CurrentCulture));
我说可怕的选项,因为拥有一个字典列表似乎是一个可滥用的模式,你应该有一个具有属性Name
和Date
的对象列表,其中{{1} } property实际上是Date
类型。