搜索具有最小值的对象的对象列表,并将具有新值的该对象添加到列表中

时间:2014-07-03 13:03:01

标签: c# linq list object

我有一个这样的课程

         class car   
           {
             public string carName { get; set; }
             public decimal price { get; set; }//Group id
           }

         I have two lists like this

         List<car> listCars = new List<car>();
         List<car> lowest = new List<car>();

我想在listCars列表中搜索价格最低的汽车,并将最低价格的汽车对象添加到最低价格。

      var minPrice = lstCars.Min(carobj=>carobj.price);

但在此只能获得最低汽车价格。我想获取汽车对象并将其添加到最低列表中。 怎么做?

3 个答案:

答案 0 :(得分:2)

您可以按照Price按升序对汽车进行分类,然后获得价格最低的第一辆汽车:

lowest.Add(listCars.OrderBy(car => car.price).First());

你也可以使用MinBy方法,对于更大的列表会更有效,因为订购费用很高。

答案 1 :(得分:1)

多种方式。您可以使用OrderBy,然后选择First,也可以使用已经过时的minPrice代码:

var minPrice = lstCars.Min(carobj=>carobj.price);
lowest.Add(listCars.FirstOrDefault(r=> r.price == minPrice));

答案 2 :(得分:0)

string的最低价格?这是一个价格,那么我会使用decimal。如果您还想添加价格最低的所有汽车:

var minPriceGroup = listCars
    .Select(c => new { Car = c, Price = decimal.Parse(c.price) })
    .OrderBy(x => x.Price)
    .GroupBy(x => x.Price)
    .First();
lowest.AddRange(minPriceGroup.Select(x => x.Car));