2010-06-11 4 views
1

J'ai le code ci-dessous où j'essaie de passer par les questions enfant de mon type anonyme qestAires. Quand j'arrive à la boucle de foreach j'obtiens l'erreur:Ne peut pas utiliser foreach sur un type anonyme

foreach statement cannot operate on variables of type 'Question' because 'Question' does not contain a public definition for 'GetEnumerator'

Que dois-je faire différemment pour contourner ceci?

 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) 
     { 

     } 
+0

Quel type 'ne questAires' résoudre à? Vous pouvez vérifier en utilisant Intellisense/tooltip dans le débogueur, juste casser sur la ligne suivant l'instruction LINQ. – ChrisF

+1

Il semble que questAires.Questions n'implémente pas IEnumerable. –

Répondre

5

questAires.Questions ne répondra qu'à une seule question, et vous obtiendrez un objet questAires pour chaque question (ce qui causera .Single() à lancer).

Je suppose que vous voulez quelque chose comme ceci:

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() 
+0

Parfait, vous êtes l'homme. –

0

q résout en fait à un seul article de la dc.Questions.Where(...) dénombrable, alors oui, vous allez seulement pour obtenir un seul élément - pas dénombrable - pour les questions.

Questions connexes