我有一个带有对象及其属性的arraylist。有没有办法比较对象的属性?
更新以下是列表示例
listTA = {(ID, MonAry[], RequestDate), (ID, MonAry[], RequestDate)};
答案 0 :(得分:2)
创建一个新的类实现IComparer
接口。然后,您可以致电myList.Sort(new MyComparer());
对列表进行排序,然后使用新的MyComparer().Compare(firstOne, secondOne);
示例:
using System;
using System.Collections;
public class SamplesArrayList {
public class myReverserClass : IComparer {
// Calls CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare( Object x, Object y ) {
// you can implement this method as you wish! cast your x and y objects and access to their properties.
return( (new CaseInsensitiveComparer()).Compare( y, x ) );
}
}
public static void Main() {
// Creates and initializes a new ArrayList.
ArrayList myAL = new ArrayList();
myAL.Add( "The" );
myAL.Add( "quick" );
myAL.Add( "brown" );
myAL.Add( "fox" );
myAL.Add( "jumps" );
myAL.Add( "over" );
myAL.Add( "the" );
myAL.Add( "lazy" );
myAL.Add( "dog" );
// Displays the values of the ArrayList.
Console.WriteLine( "The ArrayList initially contains the following values:" );
PrintIndexAndValues( myAL );
// Sorts the values of the ArrayList using the default comparer.
myAL.Sort();
Console.WriteLine( "After sorting with the default comparer:" );
PrintIndexAndValues( myAL );
// Sorts the values of the ArrayList using the reverse case-insensitive comparer.
IComparer myComparer = new myReverserClass();
myAL.Sort( myComparer );
Console.WriteLine( "After sorting with the reverse case-insensitive comparer:" );
PrintIndexAndValues( myAL );
}
public static void PrintIndexAndValues( IEnumerable myList ) {
int i = 0;
foreach ( Object obj in myList )
Console.WriteLine( "\t[{0}]:\t{1}", i++, obj );
Console.WriteLine();
}
}
另一个IComparer示例:
private class sortYearAscendingHelper : IComparer
{
int IComparer.Compare(object a, object b)
{
car c1=(car)a;
car c2=(car)b;
if (c1.year > c2.year)
return 1;
if (c1.year < c2.year)
return -1;
else
return 0;
}
}
答案 1 :(得分:0)
检查SO帖子,
Arraylist can't compare objects after they are loaded from disk
使用IComparable
或IComparer2
http://www.codeproject.com/KB/recipes/Beginners_Sort.aspx#IComparablevsIComparer2
由于