You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在while判断条件中包含listOfObjectDishes列表全部13个索引的Dish比较

首先修正原有逻辑错误

你原有代码使用||(逻辑或)拼接条件存在严重问题:只要任意一个selectedDish != xxxx的判断成立,整个条件就为真。而selectedDish不可能同时等于所有13个菜品的Dish值,所以哪怕你手动补全13个索引的判断,这个条件永远为真,会直接进入死循环。

你实际要实现的逻辑应该是:当selectedDish不存在于列表所有Dish值中时,继续循环,有以下两种常用实现方案:


方案1:使用LINQ(最简洁,推荐)

首先引入LINQ命名空间:

using System.Linq;

直接替换原有while条件即可,适配任意长度的列表,后续列表元素数量变动无需修改代码:

// 语义更直观:selectedDish 不在所有Dish的ToString结果集合中时继续循环
while (!listOfObjectDishes.Select(d => d.Dish.ToString()).Contains(selectedDish))
{
    // 原有循环逻辑
}

和上面写法完全等价的另一种写法:

// 所有Dish的ToString结果都不等于selectedDish时继续循环
while (listOfObjectDishes.All(d => selectedDish != d.Dish.ToString()))
{
    // 原有循环逻辑
}

方案2:不使用LINQ,手动封装判断方法

如果环境不允许使用LINQ,可以自己封装遍历判断逻辑:

// 先封装判断方法,DishObject替换为你listOfObjectDishes的元素类型
private bool CheckDishExists(string selectedDish, List<DishObject> dishList)
{
    foreach (var item in dishList)
    {
        if (item.Dish.ToString() == selectedDish)
        {
            return true;
        }
    }
    return false;
}

// 循环处调用
while (!CheckDishExists(selectedDish, listOfObjectDishes))
{
    // 原有循环逻辑
}

内容的提问来源于stack exchange,提问作者Slide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:24:03