попробуйте это:
List<Product> list1 = new List<Product>() { new Product(1), new Product(3), new Product(2), new Product(6), new Product(5)};
List<Product> list2 = new List<Product>() { new Product(14), new Product(10), new Product(8), new Product(6), new Product(1) };
List<Product> list3 = new List<Product>() { new Product(11), new Product(22), new Product(38), new Product(14), new Product(155) };
List<List<Product>> products = new List<List<Product>>() { list1, list2, list3 }; //just some dummy data
var highestSumOfPrices = products.Max(lp => lp.Sum(p => p.Cost));
var result = products
.FirstOrDefault(lp => lp.Sum(p => p.Cost) == highestSumOfPrices);
, что мы делаем здесь: сначала мы берем наибольшую сумму всех цен в списке списков. затем мы берем первый список, который соответствует условию: сумма стоимости продуктов списка равна наибольшему из всех списков в коллекции. Я надеюсь, что это работает для вас. в качестве альтернативы вы можете попробовать:
var result = products.OrderByDescending(pl=>pl.Sum(p=>p.Cost)).First();
вы можете упорядочить (в порядке убывания) список списков по сумме затрат на их продукцию и просто взять первый результат;это более простое решение, работает так же хорошо, но я ничего не могу сказать о производительности