按对象的值排序数组

时间:2013-11-04 19:04:10

标签: c# arrays list sorting

我有一个名为RateQuote的对象,其中包含以下内容:

  • 名称
  • 期限

例如:

rate  = new RateQuote() {
  Term = 24,
  Miles = 120000,
  Name = '24 mo. / 120000 miles'
}

rate = new RateQuote() {
  Term = 24,
  Miles = 50000,
  Name = '24 mo. / 50000 miles'
} 

rate = new RateQuote() {
  Term = 12,
  Miles = 50000,
  Name = '12 mo. / 50000 miles'
} 

这些RateQuote被添加到RateQuote []对象中:

  public void AddRate(RateQuote rate)
  {
      Rates = Rates.Concat(new RateQuote[] { rate }).ToArray();
  }

.Concat添加它们之后,我该如何排序?如果我的代码首先添加“24 mo。/ 120000英里”,然后是“24 mo。/ 50,000英里”秒,然后是“12 mo。/ 50000 miles”,那么我希望它能够对它进行排序以便它是按此顺序:

  • 12点。 / 50000
  • 24 mo。 / 50000
  • 24 mo。 / 120000

它应该先按几个月排序,然后按里程排序。我很困惑,也很感激帮助。我知道我可以使用.Sort函数,但不确定如何在此上下文中使用它。提前感谢您的所有帮助。

2 个答案:

答案 0 :(得分:9)

您希望首先按Term订购,然后按Miles订购。然后你可以使用:

var sorted = Rates
               .OrderBy(r=> r.Term)
               .ThenBy(r=> r.Miles)
               .ToArray();

答案 1 :(得分:1)

您可以使用linq,例如:

var orderedRates = rates.GroupBy(rq => rq.Term)
                       .OrderBy(g => g.Key)
                       .SelectMany(g => g.OrderBy(rq => rq.Miles))
                       .ToArray();
相关问题