Cześć, mam taki kawałek kodu z LINQ:
public void GetShoppingList()
{
var dayIds = new List<int>() { 33, 44, 46 };
var allProducts = (from dd in dbContext.DayDiets
select new { dd.Id } into day
join ddm in dbContext.DayDietMeals on day.Id equals ddm.DietDayId
join mp in dbContext.MealProducts on ddm.MealId equals mp.MealId
select new { mp.ProductId, mp.Quantity, day.Id } into pid
join p in dbContext.Products on pid.ProductId equals p.Id
select new { pid.Id, p.ProductName, p.CategoryId, pid.ProductId, pid.Quantity } into data
join c in dbContext.ProductCategories on data.CategoryId equals c.Id
select new {data.Id, data.ProductId, data.ProductName, data.CategoryId, data.Quantity, c.Name})
.ToList();
var shoppingList = allProducts
.Where(a => dayIds.Contains(a.Id))
.GroupBy(a => new { Category = a.CategoryId })
.Select(groupCat => new
{
Categories = groupCat.Key,
Products = groupCat.GroupBy(a => a.ProductId)
.Select(groupProd => new
{
Product = groupProd.Key,
Quantity = groupProd.Sum(a => a.Quantity)
}).ToList()
}).ToList();
}
Chciałem uzyskać obiekt pogrupowany wg kategorii, a w liście tych kategorii uzyskać listę produktów z ilością i to się po części udało:
Jak widać mam zwrócone Id, nie wiem niestety jak odwołać się do data.ProductName
oraz c.Name
z obiektu allProducts
tak aby wyrzucić już gotowy obiekt z nazwami. Prośba o pomoc