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

相关问题