如何对列表<;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[??????];
谢谢!
除非我遗漏了什么?
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"]
。