2012-03-12 5 views
3

문자열에 묶음이있는 코드가 있습니다. 정렬되는 항목은 검색 구문이 제목 열과 키워드 열에있는 여러 개의 제목을 가져 오는 데이터베이스 쿼리의 결과입니다. 검색 구문의 첫 번째 출현으로 정렬하고 싶지만 검색 구문이 제목에없는 경우 -1의 색인을 가지며 맨 위에 올립니다. 제목 아래에 검색 구문이없는 결과를 얻고 싶습니다.OrderBy IndexOf 맨 아래에 음수가있는 문자열

q = "orange"; 
IQueryable.OrderBy(a => a.title.IndexOf(q)); 

답변

4

문제 -1 낮은 번호로 해석되고, 따라서 그들 결과 전면 얻을수 있다는 것이다. 대신에 가능한 최대 수로 (일명 찾을 수 없음) -1을 변경하고 첫 번째`뒷면

q = "orange"; 
IQueryable.OrderBy(a => { 
    var index = a.title.IndexOf(q); 
    return index < 0 ? Int32.MaxValue : index; }); 
+0

에 요소를 밀어?의'''대신해야한다. MaxValue는 단지 Max가 아닙니다. 그렇지 않으면 좋다. – Yuck

+0

@ Yuck doh, 더 많은 커피 필요 :) – JaredPar

관련 문제