Это ужасная идея.Вы не можете просто обойти анонимные объекты и обеспечить безопасность всех типов, и это тоже не идея.Это также ужасный запрос, учитывая множество внутренних запросов.
Вот то, что вы должны использовать, следуя общим шаблонам и соглашениям об именах:
public class TaskGroup
{
public string Key { get; set; }
public Lists<TaskViewModel> Tasks { get; set; }
}
public class TaskViewModel
{
public string Name { get; set; }
public string Assignee { get; set; }
// rest of the properties
}
И вы бы использовали это:
List<TaskGroup> data = context.TableName
.GroupBy(x => x.GroupingProperty)
.Select(grp => new TaskGroup
{
Key = grp.Key,
Tasks = grp.Select(task => new TaskViewModel
{
Name = task.Task,
Assignee = task.Name,
// etc
})
.ToList()
})
.ToList();