データベースに 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 を結合して書き直すことはできますか? 時間の短縮も期待していますが、何が速いでしょうか?