0

InvalidOperationException이?문제, 오류 : 나는 일반적인 목록을 정렬하려고하고</p> <p>누구가를 해결하는 방법에 대한 제안을 가지고 수행하는 <code>InvalidOperationException</code> 오류를 얻고있다

List<XYZ<String, String>> 목록은 함수를 통해 매개 변수로 전달됩니다.

func(List<XYZ<String, String>> PassedList) { 

    PassedList.Sort(); 
} 

어떤 제안이라도 도움이 될 것입니다.

+0

경우 InvalidOperationException의 상세 메세지는 무엇 :

오히려 PassedList.Sort()를 사용하는 것보다, 나는 다음과 같은 성명을 사용? – dtb

+0

XYZ는 allready가 아닌 경우 http://msdn.microsoft.com/en-gb/library/system.icomparable.aspx에서 상속해야하며 (있는 경우 CompareTo 함수의 코드를 제공하십시오) 적절한 구현 - List .Sort는 CompareTo 함수를 사용합니다. http://msdn.microsoft.com/en-us/library/b0zbh7b6.aspx – VisualMelon

답변

0

linq 문을 사용하여 문제가 해결되었습니다.

PassedList = PassedList.OrderBy(x => x.Column1).ToList(); 
1

당신의 XYZIComparable 또는 (더 좋은) IComparable<XYZ<T, U>>를 구현해야해야한다. 그게 가능하지 않으면

, 당신은 (더 나은 아직, 다시) IComparer<XYZ<String, String>>IComparer 또는를 구현하는 클래스를 생성하고 이러한 개체의 인스턴스를 취 Sort()의 오버로드를 사용하거나 다른 대리자를 취 양식을 사용해야 하나 또는 Comparison<XYZ<String, String>> (두 개의 XZY<String, String> 인수를 취하여 int을 반환하는)와 일치하는 lamda 식입니다.

Sort() 메서드가 작동하지 않아서 XYZ이 나오면 정렬 할 수 없습니다.

+0

Jon 감사합니다. 가능한 한 간단하고 따라서 linq 시도하고 성공한 코드를 유지하려고했습니다. – SonalKhodiyar

+0

linq 버전은 약간 다른 방식으로 처리합니다. 큰 목록 (또는 될 수도 있음)이라면 세부 정보를 더 살펴볼 가치가 있습니다. Sort() 메소드가 OrderBy()보다 훨씬 더 뛰어난 경우가 있기 때문에 일부는 반대입니다. 보유. 항상 작은 목록이라면 그 부분에 대해 걱정할 필요가 없습니다. –

+0

앞으로의 사용을 염두에 두겠습니다. 공유해 주셔서 감사합니다. – SonalKhodiyar