我有一个问题...... 我有3张桌子......
用户(ID,姓名)
答案(ID,标题)
UserAnswers(ID,USER_ID,right_answer_id,user_answer_id)
现在我想获得用户名和总分 count(其中(right_answer_id == user_answer_id))* 10 所以结果可能是这样的
用户名分数
Imran 20
约翰30
我在Linq没有这样的经历。我怎样才能做到这一点? 我知道在sql中我可以这样做
select u.Name,
sum (case
when q.Right_Anwer_id = q.user_answerr_id then 1
else 0
end)
from quiz q
inner join [User] u
on u.id = q.user_id
group by u.Name,
q.test_id
having q.test_id = 1
类:
class Answer
{
public int Id { get; set; }
public string Title{ get; set; }
}
class User
{
public int Id { get; set; }
public string Name{ get; set; }
}
class UserAnswers
{
public int id { get; set; }
public int user_id { get; set; }
public int user_answer_id { get; set; }
public int right_answerr_id { get; set; }
public virtual Answer Answer { get; set; }
public virtual User User { get; set; }
}
答案 0 :(得分:1)
如果您还添加了导航属性User.UserAnswers
,则可以使用此查询:
from u in context.Users
where u.UserId == userid
select new
{
u.Name,
Score = u.UserAnswers
.Count(ua => ua.user_answerr_id == ua.right_answerr_id) * 10
}
我在TestId
中看不到UserAnswer
属性(请使用该类的单数名称),或者在任何地方,因此SQL中的test_id = 1
条件可以&# 39;在LINQ(尚)中应用。