//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
Run Code Online (Sandbox Code Playgroud)
这是我试图打印出价格最低的汽车信息的代码.但是什么都没有打印出来.
Chr*_*air 52
使用LINQMin扩展方法:
double lowest_price = list1.Min(car => car.price);
Run Code Online (Sandbox Code Playgroud)
此外,您没有指定,但如果您的集合InvalidOperationException中没有指示"序列不包含元素"的汽车,则此操作将失败.如果您可能没有汽车,快速更新可能是:
double lowest_price = list1.Any() ? list1.Min(car => car.price) : 0;
Run Code Online (Sandbox Code Playgroud)
至于为什么你当前的代码什么都不打印,因为你的初始值是0.没有汽车的值为负(或小于0).如果要继续使用现有循环,请将初始值更改为可能的最高值:
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
Run Code Online (Sandbox Code Playgroud)
请注意,这具有额外的副作用,如果您list1的汽车是空的,那么lowest_price值将是Double.MaxValue.使用现有代码可能会或可能不会引起您的关注.
如果这是一个问题,如果没有汽车需要返回0,你可以稍作调整:
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;
}
Run Code Online (Sandbox Code Playgroud)
Kin*_*ake 10
您可以在列表中使用Min扩展名.
lowest_price = list1.Min(c => c.price);
Run Code Online (Sandbox Code Playgroud)
如果您想修复代码以使其正常工作(而不是使用 Linq - 这是推荐的方法),请更改此行:
double lowest_price = 0;
Run Code Online (Sandbox Code Playgroud)
对此:
double lowest_price = double.MaxValue;
Run Code Online (Sandbox Code Playgroud)