如何解决其他每个循环的if语句-C#
我有一个这样的foreach循环,如果没有找到quad.ID == searchForQuadcopters,我希望else条件输出:“找不到单位”,但是即使找到该值,我也会得到此字符串值输出。
foreach (var quad in allQuadcopters)
{
if (quad.ID == searchForQuadcopter)
{
WriteLine("Value found.");
// write here all the information you want to display.
WriteLine($"ID: {quad.ID}");
WriteLine($"Capacity (kg): {quad.capacityKg}");
WriteLine($"Reach (km): {quad.reachKm}");
WriteLine($"Transponder ID: {quad.transponderID}");
quad.vehicleDeliveryForm();
}
else
{
WriteLine("Unit not found");
}
}
解决方法
除非您先遍历整个列表并且不遇到它,否则您不会知道是否找不到该值。
创建一个布尔标志来跟踪是否找到了该值:
bool found = false;
foreach (var quad in allQuadcopters)
{
if (quad.ID == searchForQuadcopter)
{
found = true;
WriteLine("Value found.");
// write here all the information you want to display.
WriteLine($"ID: {quad.ID}");
WriteLine($"Capacity (kg): {quad.capacityKg}");
WriteLine($"Reach (km): {quad.reachKm}");
WriteLine($"Transponder ID: {quad.transponderID}");
quad.vehicleDeliveryForm();
break; // if you don't want to iterate over the rest
}
}
if (!found) {
WriteLine("Unit not found");
}
,
我希望else条件输出:如果找不到quad.ID == searchForQuadcopters
然后,您不需要此循环。您的代码将遍历所有项目,如果allQuadcopters
包含ID 1、2和3,而您正在寻找2,它将为ID 1和3打印“找不到单元”。您可以break;
if()
中跳出循环,但else
仍然会被击中1。
您要在此处利用Linq:
var quad = allQuadcopters.FirstOrDefault(q => q.ID == searchForQuadcopters);
if (quad == null)
{
WriteLine("Unit not found");
}
else
{
WriteLine("Value found.");
// write here all the information you want to display.
WriteLine($"ID: {quad.ID}");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。