Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find the lowest value from the list?

Tags:

c#

 //create the new object for cars     Cars s1 = new Cars("Toyota", 2005, 500000, "White", "good");//Car1 Ob     Cars s2 = new Cars("Honda", 2004, 550000, "Black", "fine");//Car2 Ob     Cars s3 = new Cars("Nissen", 2012, 490000, "Yellow", "best");//Car3 Ob     Cars s4 = new Cars("Suzuki", 2012, 390000, "Blue", "fine");//Car4 Ob     Cars s5 = new Cars("BMW", 2012, 1000000, "Green", "Good");//Car5 Ob      //Create list to add objects into the memory     List<Cars> list1 = new List<Cars>();     list1.Add(s1);list1.Add(s2);list1.Add(s3);list1.Add(s4);list1.Add(s5);     //cars info which has the lowest price         double lowest_price = 0;         foreach(Cars a in list1){         if(a.price <= lowest_price){             lowest_price = a.price;             Console.WriteLine(a.price);             }         }//end of loop 

That's the code which I am trying to print out the the cars info which has the lowest price. But nothing gets print out.

like image 520
user2042721 Avatar asked Jul 15 '13 16:07

user2042721


People also ask

How do you find the lowest value in a list in Python?

The Python min() function returns the lowest value in a list of items. min() can be used to find the smallest number in a list or first string that would appear in the list if the list were ordered alphabetically.

How do I find the minimum in a list of numbers?

How to calculate the minimum of a list of numbers? To find the smallest value (the minimum) among a list of numbers, it is necessary to go through the whole list of numbers and compare their values one after the other. The minimum in the list is the smallest value found when all values have been compared.


1 Answers

Use the LINQ Min extension method:

double lowest_price = list1.Min(car => car.price); 

Also, you didn't specify, but this will fail if you have no cars in your set with an InvalidOperationException indicating "Sequence contains no elements". If it's possible you have no cars, a quick update might be:

double lowest_price = list1.Any() ? list1.Min(car => car.price) : 0; 

As to why your current code prints nothing it's because your initial value is 0. No car has a value that is negative (or less than 0). If you want to keep using your existing loop, change the initial value to the highest possible value:

double lowest_price = Double.MaxValue; foreach(Cars a in list1){     if(a.price <= lowest_price){         lowest_price = a.price;         Console.WriteLine(a.price);     } }//end of loop 

Note that this has the additional side effect that if your list1 of cars is empty, then the lowest_price value will be Double.MaxValue. This may or may not be a concern for you with your existing code.

If it is a concern, and need to return 0 if there are no cars, you can make a slight adjustment:

double lowest_price; if (list1.Any()){     lowest_price = Double.MaxValue;     foreach(Cars a in list1){         if(a.price <= lowest_price){             lowest_price = a.price;             Console.WriteLine(a.price);         }     }//end of loop } else{     lowest_price = 0; } 
like image 178
Chris Sinclair Avatar answered Sep 29 '22 17:09

Chris Sinclair