2011-04-19 129 views
0

我有一個包含對象及其屬性的數組列表。有沒有辦法比較對象的屬性?比較數組列表中的對象

更新下面列表例如

listTA = {(ID, MonAry[], RequestDate), (ID, MonAry[], RequestDate)}; 
+0

是的,但請提供一些示例數據(輸入及比理想的結果) – 2011-04-19 18:20:39

+0

是。 (你的問題太模糊了我什至不知道你想問什麼) – 2011-04-19 18:20:46

+0

你想排序嗎? – 2011-04-19 18:20:55

回答

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

+1如果OP需要比較排序,這是一個很好的答案。 :) – jsmith 2011-04-19 18:36:57

+0

如果我想將數組內的值(MonAry [])與另一個對象的MonAry []進行比較,我應該怎麼做? – 2011-04-20 08:25:56