Вы можете просто использовать 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 (продукт) не печатает «подробности» продукта. Конечно, это потому, что вы закончили с реализацией метода .ToString()
по умолчанию для объектов. Вы должны либо создать эту строку самостоятельно в foreach l oop - либо переопределить метод .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);
}