【发布时间】:2018-06-01 01:38:51
【问题描述】:
嗨,我有以下代码
var query = (from R in db.Registrations
join c in db.Campus
on R.CampusId equals c.CampusId
from tsr in db.TutorStudentRequests.Where(t => t.TutorId == R.RegistrationId).DefaultIfEmpty()
where R.UserTypeId == 2 && tsr.StatusId!=3
orderby R.Name ascending
select new
{
RegistrationId = R.RegistrationId,
Name = R.Name,
Email = R.Email,
Phone = R.Phone,
Password = c.CampusName,
IsGPA = R.IsGPA,
IsActive = R.IsActive,
StripeId = R.StripeId,
CreatedOn = R.CreatedOn,
UserTypeId =tsr.StudentReviewRating
})
.ToList();
我的注册表单行,我还有另一个表 TutorStudentRequests 有多行。如何获取 TutorStudentRequests 表中列名 StudentReviewRating 的平均值?
结构可能如下所示:
注册表
RegistrationId Name Email
1 abc abc@gmail.com
2 xyz xyz@gmail.com
TutorStudentRequests 表
Id TutorId(RegistrationId of F.k.) StudentReviewRating
1 1 5
2 1 2
3 1 1
4 2 3
我希望 UserTypeId 数据作为每个 TutorId 的 StudentReviewRating 的平均值
试过
var query = (from R in db.Registrations
join c in db.Campus
on R.CampusId equals c.CampusId
from tsr in db.TutorStudentRequests.Where(t => t.TutorId == R.RegistrationId).DefaultIfEmpty()
where R.UserTypeId == 2 && tsr.StatusId != 3
group R by new
{
R.RegistrationId,
R.Name,
R.Email,
R.Phone,
c.CampusName,
R.IsGPA,
R.IsActive,
R.StripeId,
R.CreatedOn,
} into groupings
select new
{
RegistrationId = groupings.Key.RegistrationId,
Name = groupings.Key.Name,
Email = groupings.Key.Email,
Phone = groupings.Key.Phone,
Password = groupings.Key.CampusName,
IsGPA = groupings.Key.IsGPA,
IsActive = groupings.Key.IsActive,
StripeId = groupings.Key.StripeId,
CreatedOn = groupings.Key.CreatedOn,
Average = groupings.Average(p=>Convert.ToDecimal(p.StudentReviewRating))
});
但它是说注册不包含'StudentReviewRating'的定义..
怎么了?
【问题讨论】:
-
如果您要手动编写带有联接的查询,为什么要使用
entity-framework标签?学会使用导航属性,有问题的查询将是微不足道的。
标签: asp.net-mvc linq asp.net-mvc-4 asp.net-mvc-3 linq-to-entities