2010-04-07 3 views
1

익명 형식을 정렬하는 방법에 대한 질문이 있습니다. Linq2SQL 사용익명 형식 정렬

내가 제출의 목록 반환 다음 쿼리, 한 :

var submissions = EventSubmissions 
    .Where(s => s.EventId.Equals(eventId)); 

다음과 같은 인터페이스 (다소 simplyfied) 고려 :이 인터페이스를 사용하여

public interface IQuerySorter 
{ 
    IOrderedQueryable Sort(IQueryable query); 
    IOrderedQueryable<T> Sort<T, U>(IQueryable<T> query, Expression<Func<T,U>> selector); 
    ... 
} 

는 나를을 구현할 수 있습니다 예를 들어 '분류 자'의 수 날짜, 등급 또는 제출이 지명되었는지 여부 (투표 용).

sortedQuery = sorter.Sort(submissions) 

지금까지 그렇게 좋았습니다. 제출은 "유권자"로 만들 수 있습니다. 나는 지명 제출은 다음과 같은 쿼리를 사용 할 수 있습니다 투표 수를 얻을 :

var withVoteCount = submissions 
    .Select(s => new {NumberOfVotes = s.Votes.Count(), Submission = s}); 

내 "일반"분류기 클래스를 사용 NumberOfVotes하여이 새 쿼리를 정렬하지만,이 문제를 익명의 형태로 실행하고 싶습니다/member는 repository-method 외부에 살지 않는 것처럼 보이므로 나는 그것을 정렬 할 수 없다.

모든 입력 사항을 매우 높이 평가할 것입니다.

+3

정렬을 위해 표준 OrderBy LINQ 확장을 사용하지 않는 이유는 무엇입니까? –

답변

0
나는 그룹으로를 사용하여 뷰 또는 저장 프로 시저를 생성 추천과 같은 결과를 얻을 수 카운트 것

: 당신이 투표의 개수에 의해 주문을 말할 수있는 SQL을 사용하여

var withVoteCount = submissions 
    .Select(s => new {NumberOfVotes = s.Votes.Count(), Submission = s}); 

을 . 이 (거친 예)처럼 뭔가 :

select submissions.ID, submissions.Title, count(votes.ID) as NumberOfVotes 
from submissions inner join votes on submissions.id = votes.submissionid 
group by submissions.ID, submissions.Title 
order by NumberOfVotes desc 

하여 SQL 서버 DB의 SQL 뷰 또는 저장 프로 시저를 생성 한 후, 당신은 그냥 비주얼 스튜디오에서 디자이너에서 삭제하고 일반 클래스 또는 함수로 사용할 수 있습니다.

+0

감사합니다. Juan. 고려해야 할 것. –