3

如何订购一个 List<Dictionary<String,object>>只包含字符串的对象

字典的结构如下

[name: mario]
[surname: rossi]
[address: xxxxxx]
[age: 40]

我想按“年龄”排序这些词典的列表,你能帮帮我吗?

我试过:

myList.Select(x => x.OrderBy(y=>y.Value)) 

它给了我这个错误:该值不是字符串(好吧,我同意他的观点,它是一个对象,我必须以某种方式进行转换)但更重要的是我无法告诉“orderby”方法它必须按年龄排序

4

2 回答 2

6

你想要一些类似的东西

var sorted = myList.OrderBy(dict => Convert.ToInt32(dict["age"]));

我使用Convert.ToInt32了防御性的方法,因为您使用另一种数据类型的可能性很小,并且将(拆箱)转换为错误的类型会引发异常。

于 2012-11-13T10:08:59.693 回答
5
myList.Sort((x,y) => ((int)x["age"]).CompareTo((int)y["age"]));

或类似的:

myList.Sort((x, y) => Comparer.Default.Compare(x["age"], y["age"]));

然而!如果您使用正确的类型而不是字典会容易得多;那么它就是:

myList.Sort((x,y) => x.Age.CompareTo(y.Age));
于 2012-11-13T10:08:51.067 回答