0

データベースに Dish というテーブルと Ingredient というテーブルがあります。また、料理と Ingredient または Dish のいずれかとの関係を表す DishIngredient という別のテーブルもあります。DishIngredient には、「テーブル」という列もあり、料理と料理の関係、または料理と食材の関係が保存されます。

ここに私のC#コードがあります:

List<int> dish = (from x in db.DishIngredient
                  join y in db.Dish on x.dish_ing_dish equals y.dish_id
                  where x.dish_ing_ing == ing_id && x.table == "Ingredient"
                  select y.dish_id).ToList();

for (int i = 0; i < dish.Count; i++)
{
    int dish_id = dish[i];
    List<int> dish_in_dish = (from x in db.DishIngredient
                              join y in db.Dish on x.dish_ing_dish equals y.dish_id
                              where x.dish_ing_ing == dish_id && x.table == "Dish"
                              select y.dish_id).ToList();
    dish.AddRange(dish_in_dish);
}

dish = dish.Distinct().ToList();

Dish と Dish を結合することで同じ結果が得られる気がしますが、その方法がわかりません。

このコードは、Dish と Dish を結合して書き直すことはできますか? 時間の短縮も期待していますが、何が速いでしょうか?

4

1 に答える 1