【问题标题】:c# Sorting a Custom Listc# 对自定义列表进行排序
【发布时间】:2013-03-23 04:59:30
【问题描述】:

我有以下列表:

public class Address{
    public string Number { get; set; }
    public string Street { get; set; }
    public string Suburb { get; set; }
}

List<Address> MyAddressList = new List<Address>();

我想要做的是按 Suburb 和 Street 对这个列表进行排序。 我已经看到我可以按属性之一(在本例中为郊区)进行排序:

MyAddressList = MyAddressList.OrderBy( x => x.Suburb ).ToList();

但我想先按 Suburb 然后按 Street 排序。 谢谢

【问题讨论】:

    标签: c# linq list sorting object


    【解决方案1】:

    您可以使用 ThenBy(或 ThenByDescending)调用来链接进一步的排序:

    MyAddressList = MyAddressList.OrderBy( x => x.Suburb ).ThenBy(x => x.Street).ToList();
    

    【讨论】:

      【解决方案2】:

      你可以使用 ThenBy

      按升序对序列中的元素进行后续排序。

      http://msdn.microsoft.com/en-us/library/system.linq.queryable.thenby.aspx

      MyAddressList = 
         MyAddressList.OrderBy( x => x.Suburb ).ThenBy(x => x.Street).ToList();
      

      如果需要,也可以chain multiple ThenBy

      【讨论】:

        【解决方案3】:

        您也可以像这样使用Comparison 委托:

        private int CompareAddress(Address first, Address second)
        {
            if (first.Suburb.Equals(second.Suburb))
            {
                return first.Street.CompareTo(second.Street);
            }
            else
            {
                return first.Suburb.CompareTo(second.Suburb);
            }
        }
        

        然后:

        List<Address> MyAddressList = new List<Address>();
        MyAddressList.Sort(CompareAddress);
        

        【讨论】:

          猜你喜欢
          • 2013-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-10
          • 1970-01-01
          • 2011-03-10
          相关资源
          最近更新 更多