簡體   English   中英

根據字典元素對C#列表進行排序

[英]Sorting C# List based on Dictionary elements

在我的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 => x [“ val3”]); 我的列表順序仍然相同。 知道我做錯了什么嗎? 謝謝

可能您尚未分配OrdeyBy返回的結果。 你可以做:

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

這將對您的元素進行排序,並將它們放入新列表中。

您還可以使用List<T>.Sort方法來執行此操作,而無需創建新列表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM