我有点沮丧,试图让自定义对象类型的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的输出与顶部相同。因为它只是排序第一个数字。英尺是一个字符串,但包含数字。任何帮助表示赞赏。谢谢!
答案 0 :(得分:0)
对于arrayList,也许你应该使用sort。
http://msdn.microsoft.com/en-us/library/8k6e334t.aspx
我建议尽可能避免使用ArrayList,或者除非您出于特定目的需要它。在这种情况下,列表或您需要它的任何类型都是可取的,因为它可以让您访问奇妙的扩展方法,如OrderBy
答案 1 :(得分:0)
您必须在自定义类中实现IComparable iinterface,然后才能使用简单的List.Sort()函数。