簡體   English   中英

C#列表中不同類型的排序

[英]Sorting of different types in C# List

我有一個 ArrayList:

ArrayList myList = new ArrayList();

它至少包含兩個類實例。 我想按一個字段對其進行排序,其中包含兩個字段。 請幫助我為 Array.Sort() 方法編寫 IComparer 或請給我一個建議來為這個任務制作另一個結構(一個包含兩個類實例的列表)。

提前致謝!

像這樣的東西:

  public sealed class MyComparer: System.Collections.IComparer {
    // We want just one Comparer instance
    public static MyComparer Comparer {
      get;
    } = new MyComparer();

    private MyComparer() {
    }

    public int Compare(object x, object y) {
      if (Object.ReferenceEquals(x, y))
        return 0;
      else if (Object.ReferenceEquals(x, null))
        return -1;
      else if (Object.ReferenceEquals(y, null))
        return 1;

      // Providing that the fields of interest are of type int 
      int leftField = (x is FirstType) 
        ? ((FirstType) x).FieldOfInterest1 
        : ((SecondType) x).FieldOfInterest2;

      int rightField = (y is FirstType) 
        ? ((FirstType) y).FieldOfInterest1 
        : ((SecondType) y).FieldOfInterest2;

      return leftField.CompareTo(rightField);   
    }
  }

  ...

  ArrayList myList = new ArrayList();

  ...

  myList.Sort(MyComparer.Comparer); 

但請記住, ArrayList是一個過時的類,嘗試至少將您的設計更改為List<Object>或(更好的選擇) List<SomeBaseClassOrInterface>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM