在c#中对类对象排序

这个问题在这里已经有了答案:

  • 如何按对象中的属性排序列表<T> 19答案

  • 使用LINQ:

    tocke = tocke.OrderBy(x=> x.t.X).ToList();
    

    t公众。


    没有LINQ的直接解决方案(只是列表排序,没有额外的列表创建)。

    提供这个t是公开的:

      tocke.Sort((left, right) => left.t.X - right.t.X); 
    

    但是,恕我直言,最好的办法是让class tocka可比:

    class tocka: IComparable<tocka> {
      ...
    
      public int Compare(tocka other) {
        if (Object.RefrenceEquals(other, this))
          return 0;
        else if (Object.RefrenceEquals(other, null))
          return 1;
    
        return t.X - other.t.X; // <- Matthew Watson's idea
      }
    }
    
    // So you can sort the list by Sort:
    
    tocke.Sort();
    

    你可以使用LINQ,比如像这样:

    tocke.Sort( (x,y) => x.t.X.CompareTo(y.t.X) );
    

    但首先你必须做出t公众,至少获得时:

    public Point t { get; private set; }
    
    链接地址: http://www.djcxy.com/p/70939.html

    上一篇: Sort list of class objects in c#

    下一篇: C# : Sort list on custom property