2011-12-08 3 views
0

나는 값으로 채워진 일반 목록을 가지고 있습니다. 항목을 정렬해야하며 첫 번째 값은 쿼리 문자열과 동일해야합니다. 이 값을 비교하고 정렬 할 수 있습니까? 나는 성공하지 않으려 고 노력하고 있습니다.Generic.List <>을 (를) 1 문자열과 비교하여 정렬하는 방법

내 질문을 업데이트하는 비트.

예를 들어 ID가 1,2,3,4,5인데 ID가 5 인 페이지가 열리므로 내 searchResult에서 목록의 첫 번째 항목으로 4를 전달해야합니다.

나를 위해이 코드는 벌금과 첫 번째 항목으로 5 보여주는 일을하지만, 내가 먼저 나타납니다 그냥 "4294"예를 들어 문자열 값으로 전달할 p2.ObjectId 예를 들어 강제하고,이 ID를 가진 개체를해야합니다

Sort(searchresult); 

    static void Sort(List<CollectionsItem> list) 
     { 
      list.Sort((p1, p2) => string.Compare(p2.ObjectId, p1.ObjectId, true)); 
     } 
+2

게시 된 코드에 어떤 오류가 있습니까? 당신이 성취하고자하는 것은 어떻게 그것이 아닌가? – StriplingWarrior

+0

'ObjectId'속성으로 개체를 정렬합니다. '문자열 값'은 무엇을 의미합니까? – muratgu

+0

이 링크를 살펴 보니이 질문은 세 번째 대답 인 SO 질문에 도움이 될 것입니다. 링크 : http://www.singingeels.com/Blogs/Nullable/2008/03/26/Dynamic_LINQ_OrderBy_using_String_Names.aspx 그래서 질문 : http://stackoverflow.com/questions/722868/sorting-a-list-using-lambda- linq-to-objects – CBRRacer

답변

1

정렬 작업을 원하는 것처럼 보이지 않습니다. 당신은 상단에있는 X를 넣어하려는 경우 상단에 대상을 원하고 나머지는 OBJECTID

, 그것을 찾기를 제거 휴식과 삽입을 분류 기준으로 정렬하면

는 그냥

var item = MyList[MyList.IndexOf(Target)]; 
MyList.Remove(item); 
MyList.Insert(item,0); 

입니다 0시에 ...

1

ObjectId 속성의 값을 문자열이 아닌 숫자로 비교하려는 것 같습니다. 제안 사항은 다음과 같습니다.

 static void Sort(List<CollectionsItem> list) 
     { 
      list.Sort((p1, p2) => 
       { 
        if (int.Parse(p1.ObjectId) == int.Parse(p2.ObjectId)) 
         return 0; 
        else if (int.Parse(p2.ObjectId) > int.Parse(p1.ObjectId)) 
         return 1; 
        else 
         return -1; 
       }); 
     } 
+0

좋아 보인다, 시도 하겠지만 ObjectId는 문자열이다. – Renaldas

관련 문제