Имеется класс:
public class ExportData {
public Dictionary<string, object> DataHolder { get; set; }
public ExportData() {
DataHolder = new Dictionary<string, object>();
}
}
Далее создаётся List подобных объектов, каждый из которых содержит ключ - название свойства (для всех объектов набор ключей одинаков) и значение - значение данного свойства для данного объекта.
Задача проста - сгруппировать всё это по нескольким полям.
Например, группировка по одному полю проходит спокойно:
var result = exportData.GroupBy(c => c.DataHolder["Field name 1"]).ToList();
Нужно что-то вроде подобного:
var groups = people.GroupBy(c => new {
c.Country,
c.Gender
});
Для класса со стандартными свойствами всё хорошо. Но для моего случая так не работает:
var result = exportData.GroupBy(c => new {
c.DataHolder["Field 1"],
c.DataHolder["Field 2"]
});
Ошибка: "Неверное определение члена анонимного типа. Члены анонимного типа должны быть объявлены присваиванием члена, простым именем или доступом к члену."
Как сделать эту группировку? Поля будут подбираться каждый раз новые, то есть вместо "Field 1" будет переменная.
var result = exportData.GroupBy(c => new
{
Field1 = c.DataHolder["Field 1"],
Field2 = c.DataHolder["Field 2"]
});
Сборка персонального компьютера от Artline: умный выбор для современных пользователей