У меня есть выражение Lambda, которое возвращает данные, правильно отфильтрованные, но мне нужно сделать некоторые вычисления по возвращенным записям.Entity Framework Count и Group By in Collection
У меня есть два объекта (Пользователь и язык), которые имеют отношения «многие ко многим», и мне нужно сделать сгруппированное количество языков репатриантов, чтобы узнать, сколько людей говорит на каждом возвращенном языке.
Пример набора данных, возвращаемых лямбда-выражения:
- User1 (английский, испанский)
- Пользователь2 (английский, французский)
- User3 (английский, испанский)
Желаемый результат:
- English 3
- Испанских 2
- Французских 1
Я пытался использовать GroupBy() и выберите(), но только получил правильный результат с Еогеаспом над результатами, но хотелось бы сделать это с помощью лямбды ,
[EDIT] Ключ раствор результаты уплощение использованием SelectMany() в сочетании с GroupBy(). Спасибо @ Christos, назови правильный ответ.
Отношение «много-много», поэтому каждый язык должен иметь какое-либо свойство навигации, такое как «Пользователи», поэтому вы можете просто сделать что-то вроде «var langInfo = context.Languages.Select (e => new {Language = e , Count = e.Users.Count}). ToList(); ' – Hopeless
Мне нужно подсчитывать и группировать только элементы, содержащиеся в моем исходном результате. Побережье, чтобы требовать только для подсчета, дорого. –
Вам не нужно запрашивать всех пользователей, чтобы получить их счетчик, если вы хотите знать, как это сделать, попробуйте выполнить поиск в Google или найдите около *** явной загрузки ***. Конечно, прежде чем сделать так, «ленивая загрузка» должна быть временно отключена. Если у вас в настоящее время есть только несколько загруженных пользователей, то следуйте подходу нижеприведенного ответа (это что-то вроде этого). – Hopeless