내 Entity Framework에 액세스하는 리포지토리가 있습니다. 다음과 같은 방법이 있습니다 :Func <T, bool>을 작성하여 대부분의 하위 항목이있는 항목을 반환하려면 어떻게해야합니까?
public TEntity FindOne(Expression<Func<TEntity, bool>> criteria)
{
var query = _queryAll.Where(criteria);
return query.FirstOrDefault();
}
나는 1 대 다수 관계가있는 2 개의 엔티티가 있습니다. Courses
및 Students
으로 전화 할 수 있습니다. Course
은 복수 Students
일 수 있습니다. 대부분의 학생들이있는 코스를 반환하는 쿼리를 작성하고 싶습니다.
Courses.OrderByDescending(x=>x.Students.Count()).FirstOrDefault();
하지만 어떻게 쓸 수 있습니까? Func<T, bool>
?
나는 그것이 작동하지 않을 것 같은 다른 기준을 추가하는 것은 보이는 때문에이
(x=>x.OrderBy(y=>y.Students.Count()).FirstOrDefault().id == x.id)
하지 희망 : 당신이 마지막에 && x.Course == "CS101"
을 넣어 줄 이유
(x=>x.OrderBy(y=>y.Students.Count())
.FirstOrDefault().id == x.id
&& x.CourseName == "CS101")
orderby 버그에 대한 고마움 - 수정 됨. 나는 내가 두 번째 기준을 추가하는 방법을 잘 모를 것이라고 생각한다. 내 재산 이름 "코스"가 혼란스럽고 나는 그것을 읽지 않았다고 생각합니다. – itchi
고마워 .. 그로테스크를 찾고 있었기 때문에 나는 여기에왔다. 나는 이것이 내 저장소 (IQueryable을 노출시키지 않는 것)가 무엇보다 실패한 것 같다고 생각한다. 아마도 FindTopOne (Expression> criteria, Expression > 정렬)을 추가 할 수 있습니다. –
itchi