public async Task <IActionResult> Show(string id)
        {
            var recipes = from m in _context.MyRecipe
                          join n in _context.MyRecipe_Ingredient
                          on m.Id equals n.R_id
                          join o in _context.Ingredient
                          on n.I_id equals o.Id
                          join p in _context.MyRecipe_Seasoning
                          on m.Id equals p.R_id
                          join q in _context.Seasoning
                          on p.S_id equals q.Id
                          orderby m.Name, o.Name, q.Name
                select new
            {
                MyRecipe = m,
                Ingred   = o,
                InWeight = n.Weight,
                Season   = q,
                SeWeight = p.Weight
            };

            if (!String.IsNullOrEmpty(id))
            {
                recipes = recipes.Where(m => m.MyRecipe.Name.Contains(id));
            }
            recipes = recipes.OrderBy(m => m.Ingred.Name).OrderBy(m => m.MyRecipe.Name);

            var tmp = await recipes.ToListAsync();

            List <RecipeDetails> lrd = new List <RecipeDetails>();

            foreach (var item in tmp)
            {
                int           rid = item.MyRecipe.Id;
                RecipeDetails rd  = (lrd.Count > 0) ? lrd.ElementAt(lrd.Count - 1) : null;
                if (rd != null && rd.MyRecipe.Id == rid)
                {
                    Ingredient_W cew = new Ingredient_W {
                        Ingredient = item.Ingred, Weight = item.InWeight
                    };
                    rd.I_common.Add(cew);
                    rd.Total_calories += item.Ingred.Calories * item.InWeight;
                    Seasoning_W sew = new Seasoning_W {
                        Seasoning = item.Season, Weight = item.SeWeight
                    };
                    rd.S_common.Add(sew);
                    rd.Total_calories += item.Season.Calories * item.SeWeight;
                }
                else
                {
                    List <Ingredient_W> my_lce = new List <Ingredient_W>();
                    Ingredient_W        cew    = new Ingredient_W {
                        Ingredient = item.Ingred, Weight = item.InWeight
                    };
                    my_lce.Add(cew);
                    List <Seasoning_W> my_lse = new List <Seasoning_W>();
                    Seasoning_W        sew    = new Seasoning_W {
                        Seasoning = item.Season, Weight = item.SeWeight
                    };
                    my_lse.Add(sew);
                    rd = new RecipeDetails
                    {
                        MyRecipe = item.MyRecipe,
                        I_common = my_lce,
                        S_common = my_lse
                    };
                    rd.Total_calories += item.Ingred.Calories * item.InWeight;
                    rd.Total_calories += item.Season.Calories * item.SeWeight;
                    lrd.Add(rd);
                }
            }
            ViewData["TypesArray"] = new string[] { "Ingredient", "Seasoning" };
            return(View(lrd));
        }
        public async Task <IActionResult> Show(string id)
        {
            var recipes = from m in _context.MyRecipe
                          join n in _context.MyRecipe_Ingredient
                          on m.Id equals n.R_id
                          join o in _context.Ingredient
                          on n.I_id equals o.Id
                          join rec_seasoning in _context.MyRecipe_Seasoning
                          on m.Id equals rec_seasoning.R_id
                          join s in _context.Seasoning
                          on rec_seasoning.S_id equals s.Id
                          orderby m.Name, o.Name
                select new
            {
                MyRecipe  = m,
                Element   = o,
                Seasoning = s,
                n.Weight,
                w2 = rec_seasoning.Weight
            };

            if (!String.IsNullOrEmpty(id))
            {
                recipes = recipes.Where(m => m.MyRecipe.Name.Contains(id));
            }
            recipes = recipes.OrderBy(m => m.Element.Name).OrderBy(m => m.MyRecipe.Name);

            var tmp = await recipes.ToListAsync();

            List <RecipeDetails> lrd       = new List <RecipeDetails>();
            List <int>           seasonIds = new List <int>();

            foreach (var item in tmp)
            {
                Trace.Write(item.Seasoning.ToString());
                int           rid = item.MyRecipe.Id;
                RecipeDetails rd  = (lrd.Count > 0) ? lrd.ElementAt(lrd.Count - 1) : null;
                if (rd != null && rd.MyRecipe.Id == rid)
                {
                    Ingredient_W cew = new Ingredient_W {
                        Ingredient = item.Element, Weight = item.Weight
                    };
                    rd.I_common.Add(cew);
                    if (seasonIds.Contains(item.Seasoning.Id))
                    {
                        Seasoning_W sew = new Seasoning_W {
                            Seasoning = item.Seasoning, Weight = item.w2
                        };
                        rd.S_common.Add(sew);
                        rd.Total_calories += item.Element.Calories * item.Weight + item.Seasoning.Calories * item.w2;
                        seasonIds.Add(item.Seasoning.Id);
                    }
                }
                else
                {
                    List <Ingredient_W> my_lce = new List <Ingredient_W>();
                    Ingredient_W        cew    = new Ingredient_W {
                        Ingredient = item.Element, Weight = item.Weight
                    };
                    my_lce.Add(cew);

                    List <Seasoning_W> my_sew = new List <Seasoning_W>();
                    Seasoning_W        sew    = new Seasoning_W {
                        Seasoning = item.Seasoning, Weight = item.w2
                    };
                    my_sew.Add(sew);
                    rd = new RecipeDetails
                    {
                        MyRecipe = item.MyRecipe,
                        I_common = my_lce,
                        S_common = my_sew
                    };
                    rd.Total_calories += item.Element.Calories * item.Weight + item.Seasoning.Calories * item.w2;
                    lrd.Add(rd);
                }
            }
            ViewData["TypesArray"] = new string[] { "Ingredient", "Seasoning" };
            return(View(lrd));
        }