2013-11-15 2 views
0

일부 Linq 쿼리에 도움이 필요합니다.string.contains의 사용자 정의 필터로 목록 정렬

내가 정렬하려고하는 두 개의 매개 변수에 대해 수행 할 수있는 사용자 지정 순서로 목록을 작성하려고 시도하지만 세 번째 매개 변수는 수행하기가 훨씬 어려워 보입니다. 내가 지금 무엇을 가지고

은 다음과 같습니다

return this.currentDocuments.OrderByDescending(x => x.Created).ThenBy(x => x.Description).toList(); 

지금 내가 XML 필드에 문자열로 설정 한 세 번째 매개 변수를 추가해야합니다. 난 그냥 문자의 문자열이며 순서를 정의하는 문자열의 마지막 두 문자를 사용해야 필드를 가지고있어.

아무도 내가 이것을 어떻게 할 수 있는지 가르 칠 수 있습니까? Linq와 함께 할 수있는 무언가인가요? 아니면 이것을 수행하는 별도의 메소드를 작성해야합니까?

또한 문자열의 마지막 두 자리에 출력 할 수있는 9 가지 옵션이 있으므로 모든 옵션을 사용하는 가장 쉬운 방법을 찾아야합니다.

대단한 n00b 질문인데 어떤 조언이나 조언/사과와 감사를드립니다. 그러나 우리 모두는 어떻게 든 배워야합니다!

감사합니다.

+1

당신은 동적 linq을 조사해야합니다 –

+0

귀하의 질문은 약간 명확하지 않습니다. "XML 필드의 문자열"은 무엇을 의미합니까? XML 필드는 어디에 있습니까? –

+0

죄송합니다.이 필드는 태그 내의 XML 파일 내에 있습니다. 희망은 조금 더 의미가 있습니다. – user2039317

답변

0

Jens Kloster가 제안했듯이 Dynamic Linq에서이 문제를 확인해야합니다.

예제와 코드를 보려면이 게시물을 확인하십시오. 한 가지 제한 사항은 IEnumerable<T> 대신 IQueryable<T>을 사용해야한다는 것입니다.하지만 문제가되지 않을 수 있습니다.

코드는 다음과 같이 보일 것입니다 :

var sortingCodeToSortField = new Dictionary<string,string> 
    { {"ei", "EmployeeId"}, {"na", "Name"}, {"ag", "Age" } }; 

string sortCode = GetSortCodeFromXml(inputXml); 
string fieldToSortOn = sortingCodeToSortField[sortCode]; 

var whatYouHaveSoFar = this.currentDocuments.OrderByDescending(x => x.Created).ThenBy(x => x.Description); 

var whatYouWant = whatYouHaveSoFar.AsQueryable.OrderBy(fieldToSortOn); 

return whatYouWant.ToList(); 

동적으로 LINQ 라이브러리가 조금 바보가 될 수있다; Scott Gu의 게시물보다 더 나은 문서가 있으므로 다운로드와 함께 제공되는 html 페이지를 확인하십시오. 행운을 빈다. 오해 한 것이 있으면 다시 물어 보자.