диктонарный запрашивает элемент модели типа system.collections.generic.ienumeruble

#c# #entity-framework #linq

#c# #entity-framework #linq

Вопрос:

У меня есть модель, в которой одним из полей является TimeInClub, я пытаюсь group by создать таблицу для каждого TimeInClub , но я получаю ошибку

диктонарный запрашивает элемент модели типа system.collections.generic.ienumeruble

Код в контроллере является

 public class FansController : Controller
{
    private dbFan db = new dbFan();

    public ActionResult Index()
    {
        var group = from f in db.fans
                    group f by f.TimeInClub;

        return View(group);
    }
  

В представлении, которое у меня есть (моя модель называется Fans, мой контекст db называется fans)

 @model IEnumerable<fan_Club.Models.Fans>
  

Спасибо.

Комментарии:

1. Вы говорите, что вы группируете по «TimeInClub», вы действительно хотите упорядочить по «TimeInClub? Как это представлено на ваш взгляд?

Ответ №1:

Ошибка, которую вы получаете, связана с тем, что возвращаемый вами тип и тип @model не совпадают. Результатом a GroupBy является IEnumerable<IGrouping<TKey, TSource>> , а не IEnumerable<fan_Club.Models.Fans> . Вы должны спроецировать на тип, который соответствует @model или изменить @model


Если вы хотите OrderBy , как предложил Дэвид в своем комментарии, тогда:

 var group = from f in db.fans
            orderby f.TimeInClub 
            select f;
  

Чтобы упорядочить его по убыванию, добавьте descending ключевое слово:

 orderby f.TimeInClub descending
  

Комментарии:

1. спасибо за помощь, которая мне нужна для использования group by, могу ли я преобразовать groupby, чтобы возврат был таким, как требуется?

2. @user7024226 — Но тогда какой смысл его группировать? В основном вопрос в том, какие данные вы хотите вернуть? Какова цель этого запроса?

3. порядок по дает тот же эффект, который мне нужен, но мне нужно использовать groupby (по моему запросу на лекцию), чтобы сгруппировать всех людей, которые проводят одинаковое время в клубе

4. @user7024226 — но после того, как вы сгруппируете его, что вам нужно? GroupBy актуально, когда вы отчаянно хотите выполнить некоторые операции над каждой группой

5. хорошо, я меняю свой вопрос, я хочу сгруппировать по имени и подсчитать вхождения