1

我正在尝试根据实例化对象的类中的方法(称为 Q())的返回值对对象列表进行排序。Decaf 和Regular 两个类都派生自同一个类Coffee。这两个派生类也有不同的方法实现,Q()。它看起来像这样:

static void Main(string[] args)
{
      Decaf decafCoffee = null;
      Regular regularCoffee = null;
      List<Coffee> inventory = new List<Coffee>();
      if (type.StartsWith("D:"))
      {
          // The value of M changes based on certain criteria
          decafCoffee = new Decaf(name, D, C, M);
          inventory.Add(decafCoffee);
      }
      else if (type.StartsWith("R:"))
      {
          regularCoffee = new Regular(name, D, C, M);
          inventory.Add(regularCoffee);
      }   

      for (int j = 0; j < inventory.Count; j++)
      {
          Console.WriteLine("{0}", inventory[j].toString());
      }         
}

如何按两个类中方法 Q() 的值按升序对该列表进行排序?如果需要,我可以发布课程代码。

4

2 回答 2

3

最简单的方法大概是使用Linq的OrderBy方法:

var sorted = inventory.OrderBy(i => i.Q());

这将返回一个IEnumerable-- 如果你想List要这样做:

var sortedList = inventory.OrderBy(i => i.Q()).ToList();
于 2013-04-26T04:15:15.117 回答
0

在两个类中实现 IComparable 接口并使用 .Sort 方法。

这是一个例子。 http://www.codeproject.com/Articles/42839/Sorting-Lists-using-IComparable-and-IComparer-Inte

于 2013-04-26T04:16:12.810 回答