如何使用Linq?</idictionary>订购List <idictionary>对象的结果

时间:2012-02-14 17:33:10

标签: c# linq lambda

嗨,谢谢你的期待!

背景

我有一个工作流,它构造了一组字典,每个字典都有相同的字符串,但(当然)各种各样的值。构建这些词典后,它们将被添加到公共列表中。我需要根据每个字典中的特定KEY来排序该列表。

我使用的是C#,.NET 4,LINQ,Lambdas等。

问题

如何根据每个字典中的公共密钥属性订购字典列表?例如,如果我有下面的代码,我该如何根据&#34;颜色&#34;键?

IDictionary<String, object> item1 = new Dictionary<String, object>{"Color","Red"};
IDictionary<String, object> item2 = new Dictionary<String, object>{"Color","Blue"};
IDictionary<String, object> item3 = new Dictionary<String, object>{"Color","Green"};

var dictionaryList = new List<IDictionary<String, object>>();

dictionaryList.add(item1);
dictionaryList.add(item2);
dictionaryList.add(item3);

var orderedList = dictionaryList.OrderBy[??????];

谢谢!

3 个答案:

答案 0 :(得分:4)

除非我遗漏了什么?

var orderedList = dictionaryList.OrderBy(d => d["Color"]);

答案 1 :(得分:4)

您需要向OrderBy方法传递一个函数,该函数给定Dictionary<String, object>返回您想要订购的项目,因此:

var orderedList = dictionaryList.OrderBy(d => d["Color"]);

就够了。

顺便说一句,你可以稍微清理初始化:

var orderedList = new[] { item1, item2, item3 }.OrderBy(d => d["Color"]);

答案 2 :(得分:2)

您正在寻找d => d["Color"]