如何在Entity Framework中查询派生表并使用聚合函数?
Entity Framework 实现派生表查询
你的需求是统计用户xyz答对次数超过1次的题目总数,对应的SQL可以通过以下两种LINQ方式在Entity Framework中实现:
方式一:LINQ查询语法
var userId = "xyz"; var questionCount = (from sub in (from answer in dbContext.UserAnswers where answer.UserId == userId && answer.Correct == 1 group answer by answer.QuestionId into grouped where grouped.Count() > 1 select grouped.Key) select sub).Count();
方式二:LINQ方法语法(链式调用)
var userId = "xyz"; var questionCount = dbContext.UserAnswers .Where(answer => answer.UserId == userId && answer.Correct == 1) .GroupBy(answer => answer.QuestionId) .Where(grouped => grouped.Count() > 1) .Select(grouped => grouped.Key) .Count();
说明
两种写法都会生成与你提供的SQL逻辑完全一致的查询语句,Entity Framework会自动将内层的分组筛选逻辑转换为派生表,最终返回符合条件的题目数量。
内容的提问来源于stack exchange,提问作者Kevin Grajewski
相关产品推荐
相关产品推荐

