如何对列表<;IDictionary>;对象

本文关键字:IDictionary gt 对象 lt 列表 | 更新日期: 2023-09-27 18:24:40

嗨,谢谢你的光临!

背景

我有一个构建一组字典的工作流程,每个字典都有相同的KEYS,但(当然)有不同的VALUES。在构建这些字典之后,它们被添加到一个公共列表中。我需要根据每本字典中的一个特定关键字来排序。

我正在使用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[??????];

谢谢!

如何对列表<;IDictionary>;对象

除非我遗漏了什么?

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

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

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

这就足够了。

顺便说一句,你可以像这样清理初始化:

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

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