2013-10-08 2 views
1

와 아이 컬렉션 정렬 :LINQ - 다음과 같은 기관을 감안할 때 필터

Question 
-string Title 
-ICollection<Tag> Tags 

Tag 
-string Value 
-string TagType 

나는 종류 (A)의 TagsValue에 의해 QuestionsTagType을 부여 할 수 있습니까? 여기서 문제는 QuestionTags이 많고 주어진 TagType이 많다는 것입니다. Tags (대부분 시나리오에 따라 다르다)이 Question 인 경우 첫 번째 Tag이 중요합니다.

여기 TagTypes 자신의 열이 예를 들어 데이터 테이블 출력입니다 :

Title (Question.Title) | Topic (TagType) | Module (TagType) 
----------------------------------------------------------- 
Question 1    | Algebra   | Maths 

주어진 IQueryable<Question>, 내 목표를 달성하기 위해 Queryable.OrderBy(...)에 보낼 수있는 표현?

답변

0

@ James에게 제안을 주신 데 감사 드하지만 작동하지 않았습니다. 내가 그 올바른 생각하지 않습니다

if (sortDescending) 
{ 
    expr = q => q.Tags 
     .Where(t => t.TagType.Equals(sortByTagType, StringComparison.CurrentCultureIgnoreCase)) 
     .Max(t => t.Value); 
} 
else 
{ 
    expr = q => q.Tags 
     .Where(t => t.TagType.Equals(sortByTagType, StringComparison.CurrentCultureIgnoreCase)) 
     .Min(t => t.Value); 
} 
0
Enumerable.OrderBy(x => x.Tags.Where(x => x.TagType == aTagType).First().Value); 
+0

:이 솔루션은에 의해 주문하는 자식 수집의 필드 MinMax을 사용하는 것입니다. 태그 값보다는 태그 유형으로 정렬됩니다. 주어진 태그 유형을 가진 태그의 가치에 따라 주문하고 싶습니다. 그래서 Queryable.OrderBy (x => x.Tags.First (t => t.TagType.Equals (sortByTagType))) 값과 유사합니다. 이를 염두에두고'.First'가 SQL로 올바르게 번역 될 것인가? –

+0

편집 내용을 보았으므로 해당 설명의 첫 번째 부분은 무시하십시오. '.First'가 올바르게 SQL로 변환됩니까? –

+0

@ 플렘 그래 죄송합니다. 나는 대답 한 후에 다시 질문을 읽었습니다. 그래, '첫 번째'는 잘 번역되어야합니다. ToList()를 수행 할 수 있어야합니다. First() – James

관련 문제