嗨,谢谢你的期待!
我有一个工作流,它构造了一组字典,每个字典都有相同的字符串,但(当然)各种各样的值。构建这些词典后,它们将被添加到公共列表中。我需要根据每个字典中的特定KEY来排序该列表。
我使用的是C#,.NET 4,LINQ,Lambdas等。
如何根据每个字典中的公共密钥属性订购字典列表?例如,如果我有下面的代码,我该如何根据"颜色"键?
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[??????];
谢谢!
答案 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"]
。