我的表是:
Student_answer_Master:
Stud_ans_id QuestionId OptionId iscorrect
1 25 1 1
2 26 1 0
3 27 2 1
4 27 3 1
5 27 4 1
6 28 1 1
8 29 1 0
9 29 2 1
10 29 3 1
(我的选择是单选和多选(复选框))。
现在我想要的只是那些正确的问题的总数。
1 - 表示正确
0表示不正确。
我想要输出: 3 (对于 questionid 25,27,28 )
这是我的linq查询:
var data = (from temp in context.Student_Answer_Master
where temp.isCorrect == '1'
group temp by temp.Question_Id into g
select new {g.Key}).Count();
但是这里的数量是0。
任何人都可以告诉我我的查询有什么问题???
答案 0 :(得分:1)
试试这个应该有效。
var data = (from temp in s
group temp by temp.Question_Id into g
select new { questionid = g.Key, minIscorrect = g.Min(x => x.isCorrect) }).Where(y => y.minIscorrect != 0).Count();
在您的查询中有两件事我看起来不对。
比较一个int和一个char temp.isCorrect =='1'如果你使它成为temp.isCorrect == 1,你仍然会得到4作为计数因为你正在消除那个有错误答案的行问题编号29.
一旦你找到了这个小组,你需要检查这个问题是否有错误的答案 如果是,则消除然后再计算