0
I have this query
var qry = _productRepository.Table.GroupJoin(_categoriesRepository.Table,
            p => p.CategoryId,
            c => c.Id,
            (p, c) => new { Product = p, Categories = c.DefaultIfEmpty() })
            .Where(hdg => hdg.Product.Hidden == false)
            .AsNoTracking()
            .SelectMany(final => final.Categories,
            (final, c) => new CatalogItemResponse
            {
                ChildrenCategoryId = final.Product.ChildrenCategoryId,
                DolarRate = 0.0m,
                ResellerPriceUSD = 0.0m,
                ResellerPriceBRL = 0.0m,
                BasePriceBRL = 0.0m,
                BasePriceUSD = 0.0m,
                CategoryId = final.Product.CategoryId,
                CategoryName = (c != null ? c.Name : null),
                PictureId = final.Product.PictureId,
                Description = final.Product.Description,
                ShortDescription = final.Product.ShortDescription,
                Name = final.Product.Name,
                NameHtml = string.IsNullOrEmpty(final.Product.NameHtml) ? final.Product.Name : final.Product.NameHtml,
                PartNumber = final.Product.PartNumber,
                Hidden = final.Product.Hidden,
                Order = final.Product.Order,
                HaveMaximumPercentage = final.Product.HaveMaximumPercentage,
                MaximumPercentage = final.Product.MaximumPercentage,
                HaveMinimumPercentage = final.Product.HaveMinimumPercentage,
                MinimumPercentage = final.Product.MinimumPercentage,
                AuthorizeMaximumPercentageAlteration = final.Product.AuthorizeMaximumPercentageAlteration,
                AuthorizeMinimumPercentageAlteration = final.Product.AuthorizeMinimumPercentageAlteration,
                StandardMarkup = final.Product.StandardMarkup,
                DistributionCenterErpId = final.Product.DistributionCenterErpId,
                PictureFilename = final.Product.Picture.FileName
            }).ToList();
Before this lambda I had a Getall() and then I would foreach and take this line the way it is
if (product.PictureId.HasValue)
    q.PictureFilename = product.Picture.FileName;
Well, what I need is to take that same value, but assigning it within qry.Foreach and I’m not sure how to do it. I started trying it that way
 qry.ForEach(prd => prd.PictureFilename = ??????)
That’s right, that’s the way?
EDIT1
I did so by putting the Picture class in Left Join, but what do I assign in Select new? I gave an anonymous select new, what do I do? Any value I try to set, gives error at the bottom
var qry = _productRepository.Table.GroupJoin(_categoriesRepository.Table,
            p => p.CategoryId,
            c => c.Id,
            (p, c) => new { Product = p, Categories = c.DefaultIfEmpty() })
            .GroupJoin(_pictureRepository.Table,
            prd => prd.Product.PictureId,
            pic => pic.Id,
            (prd, pic) => new { Product = prd.Product, Pictures = pic.DefaultIfEmpty()})
            .SelectMany(sel => sel.Pictures,
            (sel, pic) => new
            {
            })
            .Where(hdg => hdg.Product.Hidden == false)            
            .SelectMany(final => final.Categories,
            (final, c) => new CatalogItemResponse
            {
                ChildrenCategoryId = final.Product.ChildrenCategoryId,
                //atribuições.................
Include that
GroupJoin(_pictureRepository.Table,
                prd => prd.Product.PictureId,
                pic => pic.Id,
                (prd, pic) => new { Product = prd.Product, Pictures = pic.DefaultIfEmpty()})
                .SelectMany(sel => sel.Pictures,
                (sel, pic) => new
                {
                })
See this screenshot of the error on top of that line: .Where(hdg => hdg.Product.Hidden == false)

Victor, I tried to do this, but the problem is I can’t get Product on Foreach anymore and I don’t know how to add. In qry I have only Catalogitemresponse
– pnet
And if you do the Foreach() before changing your list to Catalogitemresponse, it would meet?
– Victor Laio
And how would I do that? In what way, see that qry is the main query, at the moment I would take this information?
– pnet
See the idea I changed in the topic, I created a list just to store the information and make the changes and then I create my Catalogitemresponse list from the changed data
– Victor Laio
Makes a mistake:
var qry = _productRepository.Table.GroupJoin(_categoriesRepository.Table,
 p => p.CategoryId,
 c => c.Id,
 (p, c) => new { Product = p, Categories = c.DefaultIfEmpty() })
 .Where(hdg => hdg.Product.Hidden == false)
 .AsNoTracking()
 .ToList()
 .ForEach(PropertyDescriptor => {
 //DoSomething
 });This block explodes this error: It is not possible to assign void to an implicit type variable– pnet
Are you using the Propertydescriptor as a variable in foreach()? If it is, it will actually give an Exception, because there you must declare a variable corresponding to the current Foreach() item and not a class like Propertydescriptor
– Victor Laio
.Foreach(nameVariable => { //Dosomething })
– Victor Laio
Dude, I’m having trouble running your code above. It’s not working, it gives the error in the comment above. You know what might be causing this?
– pnet