while 语句将包含列表的所有索引

while statement which will include all indexes of the list

我有这样的 while 语句

while (selectedDish != listOfObjectDishes[0].Dish.ToString()
    || selectedDish != listOfObjectDishes[1].Dish.ToString()
    || selectedDish != listOfObjectDishes[2].Dish.ToString())
{}

该列表有 13 个索引,我想将它们全部包含(列表的每个索引)我该如何做对?

我认为最简单的方法是使用 linq 库的扩展方法 any() 检查您的列表。

using System;
using System.Linq;
using System.Collections.Generic;
                    
public class Program {
    public static void Main() {

        List<Dish> listOfObjectDishes = new List<Dish>();
        listOfObjectDishes.Add(new Dish("a"));
        listOfObjectDishes.Add(new Dish("b"));
        listOfObjectDishes.Add(new Dish("c"));
        
        while(listOfObjectDishes.Any(dish => dish.ToString() == "b")) {
            Console.WriteLine("Removing: " + listOfObjectDishes[0].ToString());
            listOfObjectDishes.RemoveAt(0);
        }
    }
}

public class Dish
{
    private string name =  string.Empty;
    public Dish(string name) {
        this.name = name;
    }
    
    public override string ToString() {
        return name;    
    }
}