Я хочу заказать все элементы

Вот как я могу его перебирать:

 List<Dictionary<string, object>> valueList = ((IEnumerable<object>)y.Value).Select(x => (Dictionary<string, object>)x).ToList();
 foreach (Dictionary<string, object> dict in valueList)
 {
   foreach (KeyValuePair<string, object> item in dict)
   {

   }
 }

У меня огромные проблемы с формированием LINQ-выражения, которое упорядочит все значения по определенному ключу (например, у меня есть специальный ключ, и это значение я хочу переупорядочить во всем источнике данных)

valueList.OrderBy(ya => (ya.Values as List<Dictionary<string, KeyValuePair<string, object>>>).Keys.First(key => key.Equals("propertyToSearchFor")));

Я получил:

Невозможно преобразовать тип System.Collections.Generic.Dictionary.ValueCollection в System.Collections.Generic.List >> посредством преобразования ссылки, преобразования упаковки, преобразования распаковки, преобразования упаковки или преобразования нулевого типа

Что должно быть вместо этого?

ОБНОВЛЕНО 1

Спасибо за ответ, это пример данных, которые я использую http://i63.tinypic.com/2d0mhb9. png.

У меня есть valueList, который мне нужно переупорядочить в зависимости от ключа propertyToSearchFor (посмотрите на снимок экрана: "modell", "marke" или ..., "jan"). Например, valueList[0] содержит некоторый набор данных, который имеет тот же ключ в valueList[1], но значения в valueList[1] отличаются от значений в valueList[0].

Мне нужно упорядочить ресурс данных по "модели", он должен пройти через все элементы в valueList[...] и изменить порядок этого списка в зависимости от значения модели.

ОБНОВЛЕНО 2

Вот кое-что для копирования и вставки :)

 List<Dictionary<string, object>> valueList = new List<Dictionary<string, object>>();

                                       valueList.Add(new Dictionary<string, object>() 
                                           { 
                                             {"property1", "test"},
                                             {"property2", null}, 
                                             {"property3", new Object()}, 
                                             {"property4", 34.0f}, 
                                             {"property5", 5.0d}, 
                                             {"property6", 'c'}, 
                                             {"property7", "xtest"}, 
                                             {"property8", "gtest"}, 
                                             {"property9", "jtest"}, 
                                             {"property10", "1ptest"}, 
                                             {"property11", "atest"}, 
                                             {"property12", "test"}, 
                                             {"property13", "ätest"}, 
                                             {"property14", "test"}, 
                                             {"property15", "ztest"}, 

                                           });

                                       valueList.Add(new Dictionary<string, object>() 
                                           { 
                                             {"property1", "test"},
                                             {"property2", null}, 
                                             {"property3", new Object()}, 
                                             {"property4", 342.0f}, 
                                             {"property5", 25.0d}, 
                                             {"property6", 'h'}, 
                                             {"property7", "1xtest"}, 
                                             {"property8", "gtest"}, 
                                             {"property9", "1jtest"}, 
                                             {"property10", "1ptest"}, 
                                             {"property11", "atest"}, 
                                             {"property12", "1test"}, 
                                             {"property13", "1ätest"}, 
                                             {"property14", "test"}, 
                                             {"property15", "ztest"}, 

                                           });

                                       valueList.Add(new Dictionary<string, object>() 
                                           { 
                                             {"property1", "test"},
                                             {"property2", null}, 
                                             {"property3", new Object()}, 
                                             {"property4", 344.0f}, 
                                             {"property5", 5.0d}, 
                                             {"property6", 'z'}, 
                                             {"property7", "xtest"}, 
                                             {"property8", "gt213est"}, 
                                             {"property9", "jtest"}, 
                                             {"property10", "2311ptest"}, 
                                             {"property11", "21atest"}, 
                                             {"property12", "321test"}, 
                                             {"property13", "231ätest"}, 
                                             {"property14", "31test"}, 
                                             {"property15", "z231test"}, 

                                           });

                                       valueList.Add(new Dictionary<string, object>() 
                                           { 
                                             {"property1", "test"},
                                             {"property2", null}, 
                                             {"property3", new Object()}, 
                                             {"property4", 3.0f}, 
                                             {"property5", 500.0d}, 
                                             {"property6", 'z'}, 
                                             {"property7", "xtest"}, 
                                             {"property8", "gstest"}, 
                                             {"property9", "jtest"}, 
                                             {"property10", "1pstest"}, 
                                             {"property11", "atsest"}, 
                                             {"property12", "test"}, 
                                             {"property13", "ätsest"}, 
                                             {"property14", "tesst"}, 
                                             {"property15", "ztsest"}, 

                                           });
0
ASfdsa33 7 Сен 2016 в 15:43

3 ответа

Лучший ответ

Если valueList является List<T>, а T является Dictionary<string, object>, то нет участника Values, или я что-то упускаю? Текущий элемент ya уже является Dictionary<string, object>, поэтому вам не нужно его преобразовывать:

List<Dictionary<string, object>> valueList = ...
var result = valueList.OrderBy(ya => ya.Keys.First(key => key.Equals("propertyToSearchFor")));
0
HimBromBeere 7 Сен 2016 в 13:25

В этом примере переменная ya является элементом valueList. Так что это тип Dictionary<string, object>. Итак, эта строка кода должна работать.

valueList.OrderBy(ya => ya.Values.First(key => key.Equals("propertyToSearchFor")));
0
S.Spieker 7 Сен 2016 в 13:29