Загрузка в listBox связанных данных другой сущности

Подскажите пожалуйста, как загрузить связанные данные? (многие- ко многим, использую EF Core) У нас есть БД блюд/рецептов, рецепт содержит в себе сущности "Продукты", я хочу вывести эти продукты в listBox, типа состав рецепта.

Сделал такой функционал: нажимаем ПКМ на строке в гриде и открывается новая форма с составом рецепта (см вложение) Также в начале пробовал вывести в текстбоксе, но как понимаю, это не совсем верно.

void shoMore_Click(object sender, EventArgs e)// ПКМ - на строке - Подробнее о рецепте
{
    using (ApplicationContext db = new ApplicationContext())
    {
        if (dataGridView2.SelectedRows.Count > 0)
        {
            int id = int.Parse(dataGridView2.CurrentRow.Cells[0].Value.ToString());

            //по соответствующему id
            Recipe recipe = db.Recipes.Find(id);
            RecipeInfo recipeInfo = new RecipeInfo();//созд и показать экз формы 

            recipeInfo.textBox1.Text = recipe.NameRecipe;
            recipeInfo.Show();

            // можно так, но это не совсем верно....
            var value = string.Join(", ", db.Recipes.Include(r => r.Products));
            recipeInfo.textBox2.Text = value.ToString();

            var rec = db.Products.Include(r => r.Recipes).ToList();//Продукты которые содерж в этом рецепте...НО выводит все продукты из БД
            //db.Products.Include(p => p.Recipes.Where(p => p.Recipes.Id = id)); НЕ совсем верно...
            recipeInfo.listBox1.DataSource = rec;
            recipeInfo.listBox1.DisplayMember = "NameProduct";
        }
    }
}

Я потыкался, теперь выводит все продукты, а нужно по выбранному ID, который я выбрал(состав того рецепта который выбрал):

int id = int.Parse(dataGridView2.CurrentRow.Cells[0].Value.ToString());

Нужно как то воспользоваться методом Where , но не знаю как...

И на всякий добавлю код этих сущностей, одного рецепта и парочку продуктов:

using (ApplicationContext db = new ApplicationContext())
{
    Product grechka = new Product
    {
        NameProduct = "Гречка",
        AmountInGramm = 2000,
        Note = "Гречка Минстраль",
    };
    Product svinina = new Product
    {
        NameProduct = "Свинина",
        AmountInGramm = 4000,
        Note = "Нарезанная кусочками замороженная"
    };
    // и тд...
    db.Products.AddRange(grechka, svinina, luk, morkov, tomatPasta, sosiski);
 
    Recipe r1 = new Recipe
    {
        NameRecipe = "Гречка по купечески со свининой на сковороде",
        Сookingtime = "40 минут",
        TypeRecipeTimesOfDay = "Второе",
        TotalEnergyValue = 156,
        ProteinsEnergyValue = 8,
        СarbohydratesEnergyValue = 9,
        FatsEnergyValue = 12,
        Products = { grechka, svinina, luk, morkov, tomatPasta }
    };
           
    db.Recipes.AddRange(r1);

    db.SaveChanges();
}

введите сюда описание изображения


Ответы (0 шт):