Как упорядочить результаты объекта List <IDictionary>с помощью Linq? - PullRequest
1 голос
/ 14 февраля 2012

Привет и спасибо за поиск!

Справочная информация

У меня есть рабочий процесс, который создает набор словарей, каждый из которых имеет одинаковые KEYS, но (конечно) различные ЗНАЧЕНИЯ.После построения этих словарей они добавляются в общий список.Мне нужно заказать этот список на основе определенного ключа в каждом словаре.

Я использую 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[??????];

Спасибо!

Ответы [ 3 ]

4 голосов
/ 14 февраля 2012

Если я что-то упустил?

var orderedList = dictionaryList.OrderBy(d => d["Color"]);
4 голосов
/ 14 февраля 2012

Вам необходимо передать методу OrderBy функцию, которая с указанием Dictionary<String, object> возвращает элемент, по которому вы хотите заказать, поэтому:

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

Хватит.

Кроме того, вы можете очистить инициализацию примерно так:

var orderedList = new[] { item1, item2, item3 }.OrderBy(d => d["Color"]);
2 голосов
/ 14 февраля 2012

Вы ищете d => d["Color"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...