//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.
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 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.
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With