在我的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”]); 我的清单顺序仍然相同。知道我做错了什么吗?感谢
答案 0 :(得分:3)
可能您还没有分配OrdeyBy
返回的结果。你可以这样做:
mylist = mylist.OrderBy(x => x["val3"]).ToList();
这会订购你的元素,把它们放到一个新的列表中。
您也可以使用List<T>.Sort
方法创建新列表:
mylist.Sort((x,y) => ((IComparable)x["val3"]).CompareTo(y["val3"]));