c#命令List <Dictionary <string,object >>

ale*_*lex 3 c# extension-methods

如何命令 List<Dictionary<String,object>>对象只包含字符串

字典的结构如下

[name: mario]
[surname: rossi]
[address: xxxxxx]
[age: 40]
Run Code Online (Sandbox Code Playgroud)

我想按"年龄"订购这些词典的名单你可以帮我吗?

我尝试过:

myList.Select(x => x.OrderBy(y=>y.Value)) 
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:值不是一个字符串(好吧我和他一起对,它是一个对象,我要以某种方式进行投射)但更重要的是我无法告诉"orderby"方法它必须按年龄排序

Jon*_*Jon 6

你想要一些东西

var sorted = myList.OrderBy(dict => Convert.ToInt32(dict["age"]));
Run Code Online (Sandbox Code Playgroud)

我已经使用了Convert.ToInt32防御性因为你使用另一种数据类型的可能性很小,而将(拆箱)转换为错误的类型会引发异常.


Mar*_*ell 5

myList.Sort((x,y) => ((int)x["age"]).CompareTo((int)y["age"]));
Run Code Online (Sandbox Code Playgroud)

或类似的:

myList.Sort((x, y) => Comparer.Default.Compare(x["age"], y["age"]));
Run Code Online (Sandbox Code Playgroud)

然而!如果你使用正确的类型而不是字典会更容易; 然后它只会是:

myList.Sort((x,y) => x.Age.CompareTo(y.Age));
Run Code Online (Sandbox Code Playgroud)