Loading...
Axiomatik avatar Axiomatik 2422 Точки

Hi,

This is the standard solution that is used by SoftUni instructors, however they are using ToArray() at the beginning of the query in order to avoid a specific error with judge (even though ToArray allows no further access to nested model objects):

            var usersAndProducts = context.Users
                .ToArray() // fix for Exception InMemory Query Internal, Test 000_001
                .Where(u => u.ProductsSold.Any())
                .OrderByDescending(u => u.ProductsSold.Count)
                .Take(10)
                .Select(u => new ExportNestedUserDto
                {
                    FirstName = u.FirstName,
                    LastName = u.LastName,
                    Age = u.Age,
                    SoldProducts = new ExportNestedProductsDto
                    {
                        Count = u.ProductsSold.Count,
                        Products = u.ProductsSold.Select(ps => new ExportNestedProductDetailDto
                        {
                            Name = ps.Name,
                            Price = ps.Price,
                        }).OrderByDescending(ps => ps.Price).ToArray()
                    }
                })
                .ToArray();

            var result = new ExportUserCountDto
            {
                Count = context.Users.Count(u => u.ProductsSold.Any()),
                Users = usersAndProducts
            };

Carefull, work with using when creating instance of StringWriter in order to avoid Memory-Leak:

using var textWriter = new StringWriter();

More compact Query:

// .Where(u => u.ProductsSold.Any() && u.ProductsSold.Any(p => p.BuyerId != null))

.Where(u => u.ProductsSold.Any(p => p.BuyerId != null))

 

0
softy_02 avatar softy_02 20 Точки

Thank you!

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.