我整天都在为这件事殴打,这让我疯狂!
我正在尝试做什么:
我有2个表:问题/答案
问题表包括:quesID,quesDescr 答案表包括:answerID,quesID,answer
基本上,答案表是每个问题的选项。例如:
quesID | quesDescr
1 |你最喜欢的颜色是什么?
answerID | quesID |答案
1 | 1 |红色
2 | 1 |蓝色
等...
在我的表单页面上,我想抓住问题及其所有答案选项以显示给最终用户。我似乎可以将问题列入清单,但我无法得到在我的视图上发布的问题和答案。
我以为我会在我的模型中处理查询(linq to sql)...但这并不能给我答案:
public List<nonEEPreQue> getPreQuestions()
{
return fDB.nonEEPreQues.OrderBy(q => q.preQuesOrder).ToList();
}
我在这里阅读了一些使用外连接的网页。我认为这可能是正确的,但我正在努力如何传递变量。我在模型中尝试了这个,但它似乎进入了控制器(?):
var quesList = from ques in preQ.nonEEPreQues
join an in preQ.nonEEPreQuesAnswers
on ques.preQuesID equals an.preQuesID into outer
from an in outer.DefaultIfEmpty()
select new
{
QuestionTxt = ques.preQuesDescr,
AnswerTxt = an.answerTxt
};
return View(quesList);
那么 - 以上是正确的吗?在我看来,我该怎样做才能访问问题和答案(我假设在foreach循环中)?
非常感谢任何帮助!
答案 0 :(得分:1)
由于您已经在使用Linq to SQL并使用匿名类型,因此请保持简单并以关系方式选择所需内容。
var quesList = from ques in preQ.nonEEPreQues
select new
{
QuestionID = ques.preQuesID,
QuestionTxt = ques.preQuesDescr,
Answers = (from an in preQ.nonEEPreQuesAnswers
where an.preQuesID == ques.preQuesID
select an)
};
这将为您提供一个对象,其中包含问题的QuestionTxt和QuestionID以及直接附加到问题的nonEEPreQuesAnswer
个对象的集合。这将使它们更容易枚举,并且它也应该是可绑定的(如果你正在做gridview或转发器)。
答案 1 :(得分:0)
在getPreQuestions()
中,您应该查询答案,并使用Include()
包含问题。
这将检索带有问题的属性的答案列表...然后将该列表传递给视图。