基于Dictionary元素对C#List进行排序

时间:2014-07-01 09:27:59

标签: c# list sorting dictionary

在我的C#程序中,我有一个列表,我用Dictionary元素填充:

List<Dictionary<string, object>> mylist = new List<Dictionary<string, object>>();
Dictionary<string, object> d1 = new Dictionary<string, object>();
d1.Add("val1", 1);
d1.Add("val2", 2);
d1.Add("val3", 3);
mylist.Add(d1);
Dictionary<string, object> d2 = new Dictionary<string, object>();
d2.Add("val1", 4);
d2.Add("val2", 5);
d2.Add("val3", 6);
mylist.Add(d2);
Dictionary<string, object> d3 = new Dictionary<string, object>();
d3.Add("val1", 7);
d3.Add("val2", 8);
d3.Add("val3", 9);
mylist.Add(d3);

我想根据字典元素中的某个元素对列表进行排序,例如,根据字典中的“val3”对象对列表进行排序。我试过这个:     mylist.OrderBy(x =&gt; x [“val3”]); 我的清单顺序仍然相同。知道我做错了什么吗?感谢

1 个答案:

答案 0 :(得分:3)

可能您还没有分配OrdeyBy返回的结果。你可以这样做:

mylist = mylist.OrderBy(x => x["val3"]).ToList();

这会订购你的元素,把它们放到一个新的列表中。

您也可以使用List<T>.Sort方法创建新列表:

mylist.Sort((x,y) => ((IComparable)x["val3"]).CompareTo(y["val3"]));