我有以下代码,我正在尝试查看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)
{
}
答案 0 :(得分: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()
答案 1 :(得分:0)
q实际上解析为可枚举的dc.Questions.Where(...)
中的单个项目,所以是的,你只会得到一个项目 - 而不是可枚举的 - 用于问题。