对对象的ArrayList进行排序

时间:2013-03-11 21:18:56

标签: c# linq sorting arraylist

我有点沮丧,试图让自定义对象类型的ArrayList排序。我正在尝试使用LINQ,以下代码是我测试的内容:

        foreach (classOrder co in orderList)
        {
            MessageBox.Show("Before: " + co.Feet);
        }

        //use LINQ to sort my orderList which is an ArrayList of classOrder objects
        var sortedList = orderList.OfType<classOrder>().OrderBy(r => r.Feet);

        foreach (classOrder co in sortedList)
        {
            MessageBox.Show("After: " + co.Feet);
        }

显然这是不正确的因为底部foreach的输出与顶部相同。因为它只是排序第一个数字。英尺是一个字符串,但包含数字。任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:0)

对于arrayList,也许你应该使用sort。

http://msdn.microsoft.com/en-us/library/8k6e334t.aspx

我建议尽可能避免使用ArrayList,或者除非您出于特定目的需要它。在这种情况下,列表或您需要它的任何类型都是可取的,因为它可以让您访问奇妙的扩展方法,如OrderBy

答案 1 :(得分:0)

您必须在自定义类中实现IComparable iinterface,然后才能使用简单的List.Sort()函数。