Не удается неявно преобразовать тип 'System.Linq.IGrouping <>' в 'System.Collections.Generi c .IEnumerable <> - PullRequest
0 голосов
/ 28 марта 2020

Моя проблема возникла, когда я попытался сгруппировать данные из двух таблиц в этом контроллере, как показано ниже:

public class QuestionModelsController : Controller
{
    private ApplicationDbContext db = new ApplicationDbContext();

    public ActionResult Quiz()
    {
        var Ans = from ansewrs in db.AnswerModels
                 join question in db.QuestionModels
                 on  ansewrs.QuestionID equals question.ID

                 select ansewrs;
        var grouped = from j in Ans
                      group j by j.Question.QuestionText
                      into gr
                      select new CheckListModel
                      {
                          QuestionText = gr.Key,
                          Questions = gr

                      };
        return View(grouped.ToList());
    }

Мои ViewModels:

public class CheckListModel
{
    public string QuestionText { get; set; }
    public virtual IEnumerable<QuestionModel> Questions { get; set;  }

}

public class QuestionModel
{
    public int ID { set; get; }
    public string QuestionText { set; get; }
    public string SelectedAnswer { set; get; }
    public virtual IList<AnswerModel> Answers { set; get; }


}
public class AnswerModel
{
    public int ID { set; get; }
    public string AnswerText { set; get; }

    public int QuestionID { get; set; }
    public virtual QuestionModel Question { get; set; }

}

Эта строка Questions = gr не распознана, поэтому возникнет эта ошибка: Ошибка CS0266 Невозможно неявно преобразовать тип 'System.Linq.IGrouping<string, MyAssembly.AnswerModel>' to 'System.Collections.Generic.IEnumerable<MyAssembly.QuestionModel>'. Существует явное преобразование (вам не хватает актеров?)

Пожалуйста, помогите мне и большое спасибо

1 Ответ

1 голос
/ 28 марта 2020

«Вопросы» - это последовательность вопросов. Вы даете ему последовательность групп ответов. Проблема здесь не в коде; скорее, компилятор делает свою работу, чтобы объяснить, что что-то концептуально неправильно в том, что вы делаете. Вы допустили ошибку, когда перепутали «последовательность вопросов» с «группами ответов»; устранить это несоответствие и переписать код соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...