我有一個包含對象及其屬性的數組列表。有沒有辦法比較對象的屬性?比較數組列表中的對象
更新下面列表例如
listTA = {(ID, MonAry[], RequestDate), (ID, MonAry[], RequestDate)};
我有一個包含對象及其屬性的數組列表。有沒有辦法比較對象的屬性?比較數組列表中的對象
更新下面列表例如
listTA = {(ID, MonAry[], RequestDate), (ID, MonAry[], RequestDate)};
創建一個新的類中實現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如果OP需要比較排序,這是一個很好的答案。 :) – jsmith 2011-04-19 18:36:57
如果我想將數組內的值(MonAry [])與另一個對象的MonAry []進行比較,我應該怎麼做? – 2011-04-20 08:25:56
檢查SO後,
Arraylist can't compare objects after they are loaded from disk
檢查教程的博客或者使用IComparable
或IComparer2
http://www.codeproject.com/KB/recipes/Beginners_Sort.aspx#IComparablevsIComparer2
感謝
是的,但請提供一些示例數據(輸入及比理想的結果) – 2011-04-19 18:20:39
是。 (你的問題太模糊了我什至不知道你想問什麼) – 2011-04-19 18:20:46
你想排序嗎? – 2011-04-19 18:20:55