不能在匿名类型上使用foreach

Abe*_*ler 1 linq asp.net linq-to-sql

我有下面的代码,我试图通过我的qestAires匿名类型的孩子问题.当我到达foreach循环时,我得到错误:

foreach语句不能对"问题"类型的变量进行操作,因为"问题"不包含"GetEnumerator"的公共定义

我需要做些什么来解决这个问题呢?

        var questAires = (from qs in dc.Questionnaires
                        from q in dc.Questions.Where(t => t.QuestionnaireId == qs.QuestionnaireID)
                        from r in dc.Responses.Where(qr => qr.QuestionID == q.QuestionId).DefaultIfEmpty()
                        where qs.QuestionnaireID == QuestionnaireId
                        select new
                        {
                            qs.Description,
                            Questions = q,
                            Responses = r
                        }).Single();

        foreach(var question in questAires.Questions)
        {

        }
Run Code Online (Sandbox Code Playgroud)

eri*_*len 5

questAires.Questions只会解决一个问题,你会得到questAires每个问题的一个对象(这将导致.Single()抛出).

我想你想要这样的东西:

var questAires = (from qs in dc.Questionnaires
                  select new {
                      qs.Description,
                      Questions = from q in dc.Questions where q.QuestionnaireId == qs.QuestionnaireID
                                  select new {
                                      Question = q,
                                      Response = (from r in dc.Responses where r.QuestionID == q.QuestionId select r).DefaultIfEmpty()
                                  }
                 }).Single()
Run Code Online (Sandbox Code Playgroud)