Я пытаюсь использовать Linq для группировки List<Person>
.Linq GroupBy Анонимный тип с динамическими свойствами
var grouped = personList.GroupBy(x => new { x.Forename, x.Age })
.Select(x => new { Description = x.Key, Count = x.Count() });
Как я могу создать свойства, которые будут сгруппированы? Из переменной?
var groupByProperties = new string[] { "Forename", "Age" };
personList.GroupBy(x => new { ............ })
.Select(x => new { Description = x.Key, Count = x.Count() });
groupByProperties
выйдет из пользовательского ввода на веб-странице (<select multiple>
).
Я не могу получить главу вокруг правильного синтаксиса для ExpandoObject
или dynamic
и не уверен, что мне нужно использовать Reflection здесь.
Класс Person может выглядеть примерно так:
public class Person
{
public string Forename { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
Результат передается обратно через к пользовательскому интерфейсу (веб-страницы), как JSON, из которого будет сформирована DataGrid. Я буду использовать javascript для прокрутки возвращаемого объекта Description и генерации сетки из этого.
Не используйте ExpandoObject в LINQ, как это может произойти утечка памяти – dr4cul4
Это не ясно, как вы хотите, чтобы это быть динамичным - это еще выбор времени компиляции? Вам нужен ключ * whole * group как свойство Description? Что вы делаете после этого? –
@ dr4cul4: Уточните и/или предоставите ссылки/доказательства? –