对对象列表进行排序
本文关键字:排序 列表 对象 | 更新日期: 2023-09-27 18:10:53
我试图在实例化对象的类中根据方法的返回值(称为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()的值按递增顺序对列表进行排序?我可以张贴类代码,如果需要
最简单的方法可能是使用Linq的OrderBy
方法:
var sorted = inventory.OrderBy(i => i.Q());
这将返回一个IEnumerable
——如果你想要一个List
,只需这样做:
var sortedList = inventory.OrderBy(i => i.Q()).ToList();
在两个类中实现icomable接口,并使用。sort方法
下面是一个例子。http://www.codeproject.com/Articles/42839/Sorting-Lists-using-IComparable-and-IComparer-Inte