2012-11-13 49 views
3

如何订购一个List<Dictionary<String,object>>对象包含唯一字符串C#订购列表<字典<串,对象>>

字典的结构如下

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

我想订购的列表这些字典由“年龄” 可以帮助我吗?

我已经试过:

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

它给了我这个错误:值不是一个字符串(好吧,我跟他aggree,它是一个对象,我以某种方式投) 但更重要的是,我不能告诉其必须按年龄

+0

为什么你有一个'名单<词典<字符串,对象>>'?你能改变吗? –

+0

如果我理解正确,字典包含4个项目?还是说每个项目都有这4个属性? – Oded

+0

您可以按年龄对每本词典进行排序,但如果除非每本词典仅包含具有相同年龄的对象,否则按顺序排列该排列方式是没有意义的。 –

回答

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)); 
5

你想沿着

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

我以前用过Convert.ToInt32防守,因为有你正在使用其他的数据类型为年龄小的机会线的东西,和铸造(拆箱)到错误的类型会引发异常。

相关问题