如何在每个组的基本最大值上选择列表类属性? 我尝试过如下,但没有成功..
public class STUDENT_DETAIL
{
public long? Registration_Id { get; set; }
public string Admission_No { get; set; }
public long? Class_Id { get; set; }
public long? Section_Id { get; set; }
public long? Academic_Year_Id { get; set; }
public string Student_First_Name { get; set; }
public string Student_Last_Name { get; set; }
public DateTime? Date_Of_Birth { get; set; }
public string Gender { get; set; }
public string Blood_Group { get; set; }
}
List<CUSTOM_STU_DETAIL> academicYr = new List<CUSTOM_STU_DETAIL>();
public PartialViewResult ReAdmission_of_Student(long? CompanyId, long? CompanyLocationId, long AcademicId, long? ClassID, long? SectionID)
{
if (CompanyId != null && CompanyId != 0 && CompanyLocationId != null && CompanyLocationId != 0 && ClassID != null && ClassID != 0 && SectionID != null && SectionID != 0)
{
academicYr = (from s in db.Student_Re_Admission
order by s.Re_Admission_Id descending
group s by s.Registration_Id into stugrp
//let topp = stugrp.Max(x => x.Re_Admission_Id)
select new CUSTOM_STU_DETAIL
{
}).ToList();
}
ViewBag.Student_List = StuList.ToList();
return PartialView();
}
其实我想在linq中使用以下sql查询概念。
select * from [Student_Re_Admission] where [Re_Admission_Id] in( SELECT max(Re_Admission_Id) FROM [Student_Re_Admission] group by Registration_Id )
答案 0 :(得分:0)
Re_Admission_Id
中没有STUDENT_DETAIL
,因此请使用Admission_No
代替。{/ p>
var maxReAdmissionIds =
(from s in db.Student_Re_Admission
group s by s.Registration_Id
into grp
select (grp.Max(p => Convert.ToInt32(p.Admission_No))).ToString())
.ToList();
按Registration_Id
分组,而不是先选择Admission_No
到列表。
var result = from s in db.Student_Re_Admission
where maxReAdmissionIds.Contains(s.Admission_No)
select s;
然后,使用列表获得结果
但另一个值得关注的问题是,maxReAdmissionIds
超过2100个元素会导致“sql在太多元素中”的例外情况。