В этом небольшом ASP. Net основном приложении я пытаюсь сгруппировать студентов по дате их зачисления и вернуть имена учащихся в виде строки, разделенной запятыми, в отличие от другого вида агрегации.
При использовании SQL в прошлом я использовал функцию stuff
и не смог выполнить эквивалентную операцию в качестве подзапроса в LINQ.
Ядро не позволяет мне выполнять GroupBys на стороне клиента, что я пытался сначала.
GroupBy на стороне клиента не поддерживается.
Я попробовал следующий код и получил InvalidOperationException:
IQueryable<EnrollmentDateGroup> data =
_context.Students
.GroupBy(s => s.EnrollmentDate)
.Select(s => new EnrollmentDateGroup()
{
EnrollmentDate = s.Key,
StudentCount = s.Count(),
//BELOW IS NOT WORKING
StudentNamesCSV = string.Join(",", s.Select(x => x.FirstMidName + " " + x.LastName))
});
Еще одно сообщение об ошибке и попытке отойти от использования уже сгруппированных данных:
SqlException: Column 'Student .EnrollmentDate 'недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.
//ALSO NOT WORKING
...
StudentNamesCSV = string.Join(",", _context.Students
.Where(x => x.EnrollmentDate == s.Key)
.Select(x => x.FirstMidName + " " + x.LastName))
...
Любые идеи приветствуются! Спасибо.