您可以简单地在元素列表中使用OrderBy 和ThenBy。示例如下:
void Main()
{
var products = new List<Product>();
products.Add(new Product() { Name = "A", Price = 10, Score = 20, Endurance = 30 });
products.Add(new Product() { Name = "B", Price = 5, Score = 10, Endurance = 40 });
products.Add(new Product() { Name = "C", Price = 40, Score = 10, Endurance = 20 });
products.Add(new Product() { Name = "D", Price = 30, Score = 25, Endurance = 10 });
var resultsSorted = products
.OrderBy(p => p.Price)
.ThenBy(p => p.Score)
.ThenBy(p => p.Endurance)
.ThenBy(p => p.Name);
}
class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Score { get; set; }
public int Endurance { get; set; }
}
[更新]
您确实问过如何正确打印这些产品,因为 Console.WriteLine(product) 没有打印产品的“详细信息”。当然,这是因为您最终在对象上使用了 .ToString() 方法的默认实现。您必须在 foreach 循环中自己创建此字符串 - 或覆盖 .ToString() 方法,因此它是:
foreach(var product in resultsSorted)
{
Console.WriteLine($"Name:{Name}, Price:{Price}, Score:{Score}, Endurance:{Endurance}");
}
或覆盖.ToString
class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Score { get; set; }
public int Endurance { get; set; }
public override string ToString()
{
return $"Name:{Name}, Price:{Price}, Score:{Score}, Endurance:{Endurance}";
}
}
然后你可以使用:
foreach (var product in resultsSorted)
{
Console.WriteLine(product);
}