繁体   English   中英

LINQ-EF查询将多个表分组

[英]LINQ-EF Query grouping multiple tables

我有一个复杂的查询要通过使用LINQ与EF有关。 我知道手动执行多个循环的方法,但是我想对LINQ查询执行此操作:

方案:学生考试中心

在我的场景中,数据库涉及5个基本表:测试,问题,答案,结果和参与者。

测试包含测试本身。 (int testId,字符串testName)。 1-N与问题的关系。

问题包含测试问题。 (int问题ID,int testId,字符串questionText)

答案包含问题的所有可能答案:(整数answerId,整数questionId,布尔型isCorrect)与问题的1-N关系。

结果包含每个答案的记录,该记录与回答问题的学生相关:(整数ResultId,整数AnswerId,整数参与者id,布尔isSelectedByParticipant)与答案的1:1关系。

参与者 :(int参与者ID)。 与结果1:1关系。

我想知道一个学生在每次考试中成功回答了多少个答案(因此,学生当然可以参加一些考试)。 一个问题可以有一个或多个正确的答案,但始终至少有一个正确的答案,因此,如果与某个问题相关的每个答案都没有被学生标记(isSelectedByParticipant = false),则该问题的结果将是错误的。

在此处输入图片说明

非常感谢大家的帮助。

类似于:

 results.GroupBy(r => r.ParticipientId).Select(p => new
                {
                    StudentId = p.Key,
                    Count = p.GroupBy(pr => pr.Answer.QuestionId).Select( cc => new {
// any correct answer is not selected or any incorrect answer is selected
                        notCorrect = cc.Any(q => !q.IsSelected && q.Answer.IsAnswerCorrect) || cc.Any(q => q.IsSelected && !q.Answer.IsAnswerCorrect)
                    }).Count(res => !res.notCorrect)
                });

这是工作示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM