using System.Collections.Generic;
public static void Main()
var products = new List<Product>()
{new Product() {ProductID = 1, ShopID = 1, Amount = 1000, Price = 220, AddedDate = DateTime.Parse("2020-07-01")},
new Product() {ProductID = 1, ShopID = 1, Amount = 1000, Price = 230, AddedDate = DateTime.Parse("2020-07-30")},
new Product() {ProductID = 1, ShopID = 1, Amount = 100, Price = 21, AddedDate = DateTime.Parse("2020-07-10")},
new Product() {ProductID = 1, ShopID = 1, Amount = 100, Price = 22, AddedDate = DateTime.Parse("2020-07-31")},
new Product() {ProductID = 1, ShopID = 2, Amount = 100, Price = 23, AddedDate = DateTime.Parse("2020-07-10")},
new Product() {ProductID = 1, ShopID = 2, Amount = 100, Price = 20, AddedDate = DateTime.Parse("2020-07-12")},
var result = products.Where(x => x.ProductID == 1).OrderByDescending(x => x.AddedDate).ThenBy(x => x.Price / x.Amount).FirstOrDefault();
Console.WriteLine(result.ProductID);
Console.WriteLine(result.ShopID);
Console.WriteLine(result.Amount);
Console.WriteLine(result.Price);
Console.WriteLine(result.AddedDate);
public DateTime AddedDate