0

我試圖理清一個通用的列表,並且我得到一個錯誤InvalidOperationException問題與排序列表<XYZ <字符串,字符串>>,錯誤:InvalidOperationException異常

有沒有人有關於如何糾正這一建議?

List<XYZ<String, String>>列表通過函數作爲參數傳遞。

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

    PassedList.Sort(); 
} 

任何建議將非常有幫助。

+0

有什麼InvalidOperationException異常的詳細消息? – dtb 2013-02-14 17:59:54

+0

XYZ將需要從http://msdn.microsoft.com/en-gb/library/system.icomparable.aspx繼承,如果它不是allready的(如果是的話,請提供CompareTo函數的代碼)並提供一個合適的實現 - 列表 .Sort使用CompareTo函數。 http://msdn.microsoft.com/en-us/library/b0zbh7b6.aspx – VisualMelon 2013-02-14 18:00:45

回答

0

我使用linq語句解決了這個問題。

,而不是使用PassedList.Sort(),我用下面的語句:

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

XYZ必須實現IComparable或(更好的)IComparable<XYZ<T, U>>

如果這是不可能的,你必須創建一個實現IComparer或類(再次,更好的是)IComparer<XYZ<String, String>>,並使用Sort()這需要這樣一個對象實例的過載,否則使用接受委託的形式或與Comparison<XYZ<String, String>>匹配的lamda表達式(取兩個XZY<String, String>參數,並返回int)。

如果Sort()方法不能找出哪個XYZ在哪個之前出現,那麼它就不能對它們進行排序。

+0

謝謝喬恩。我試圖保持代碼儘可能簡單,因此嘗試LINQ併成功 – SonalKhodiyar 2013-02-14 19:06:46

+0

LINQ版本以稍微不同的方式處理它。如果它是一個大的列表(或者可能是),則可能值得更多地查看細節,因爲有些情況下列表的'Sort()'方法比'OrderBy()'的性能高得多,但也有一些情況成立。如果它總是一個小列表,那麼我不會擔心它的那一面。 – 2013-02-15 16:51:41

+0

我會牢記以備將來使用。感謝你的分享。 – SonalKhodiyar 2013-02-15 16:54:00

相關問題