【问题标题】:How can I order a list of class based on a value of each class?如何根据每个类的值订购类列表?
【发布时间】:2012-01-29 02:06:06
【问题描述】:

我有这门课:

public class MyClass
{
    public MyClass()
    {

    }

    public int value { get; set; }
}

我在 List 中添加了 3 个此类:

MyClass class1 = new MyClass()
MyClass class2 = new MyClass()
MyClass class3 = new MyClass()

IList<MyClass> classList = new List<MyClass>().ToList();
classList.Add(class1);
classList.Add(class2);
classList.Add(class3);

现在,我想根据MyClass.value 值对这个列表进行排序(升序)。 如何在 C# 上做到这一点?

IList 不是强制性的,因此如果您知道任何其他订购策略,这将是很好的。

【问题讨论】:

    标签: c# list class


    【解决方案1】:

    你会打电话的

    classList.Sort()
    

    但在你必须实现 IComparable 接口之前

     class MyClass: IComparable
    {
    
        public int value { get; set; }
    
        #region IComparable Members
    
        public int CompareTo(object obj)
        {
            MyClass e = (MyClass)obj;
            int r;
            r = this.value.CompareTo(e.value);
            return r;
    
        }
    
        #endregion
    }
    

    【讨论】:

      【解决方案2】:

      在将所有项目添加到 classList 后执行此操作。 (这适用于 Framwork 3.5sp1 或更高版本)

      classList = classList.OrderBy(cc => cc.value).ToList();
      

      【讨论】:

        【解决方案3】:

        尝试使用 LINQ,例如:

        from cl in classList 
        orderby cl.value
        select cl;
        

        【讨论】:

          【解决方案4】:
          var orderedList = classList.Orderby(x =>x.Value)
          

          【讨论】:

            【解决方案5】:

            使用 LINQ 和 OrderBy 方法:

            var sortedList = classList.OrderBy(i => i.value);
            

            有对应的OrderByDescending

            【讨论】:

              猜你喜欢
              • 2020-12-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-05-15
              • 1970-01-01
              • 1970-01-01
              • 2018-06-30
              • 1970-01-01
              相关资源
              最近更新 更多