如何将这两个LINQ语句组合成一个查询?

时间:2014-02-19 14:58:32

标签: c# asp.net linq linq-to-entities

我是LINQ的新用户,我现在正在尝试检索最后一次测验中发布的答案数以及最后一次测验的总分。困难在于我有以下两个表,我需要编写一个LINQ语句来检索它所需的内容。

数据库架构的一部分:

Quiz Table: ID, Description, TotalScore
QuizAnswers Table: ID, Score, QuizID

我可以通过编写两个LINQ语句来检索所需的信息,但实际上我需要编写一个语句或将它们组合成一个查询,这样我就可以将GridView控件绑定到它了

要检索上一个测验的已发布答案数:

var lastQuizId = context.Tbl_QuizAnswers.Max(s => s.ID);
var numOfAnswers = context.Tbl_QuizAnswers.Where(s => s.QuizID == lastQuizId).Count();
return numOfAnswers;

要检索上一个测验的总分:

var lastQuizId = context.Tbl_Quiz.Max(s => s.ID);
var totalScore = context.Tbl_Quiz.Where(s => s.ID == lastQuizId).Select(s => s.TotalScore).First();
return totalScore;

那么请告诉我如何将这两个问题结合起来帮助我吗?

1 个答案:

答案 0 :(得分:0)

(from q in context.Tbl_Quiz
select new {
             Quiz = q, 
             Answers = q.Tbl_QuizAnswers, 
             AnswerCount = q.Tbl_QuizAnswers.Count, 
             Max = q.Max(q.TotalScore)
           }
orderby q.ID desc)
.FirstOrDefault()

如果您没有正确设置关系,则可以使用AnswersAnswerCount的查询,但使用q