Отфильтровано EF Core. Включить не работает с преобразованием «Выбрать».C#

Место общения программистов C#
Ответить
Anonymous
 Отфильтровано EF Core. Включить не работает с преобразованием «Выбрать».

Сообщение Anonymous »

Я столкнулся с проблемой, когда пытаюсь выполнить запрос Ef Core с отфильтрованным включением и выбором
Запрос хорошо фильтруется без выбора, но когда у меня был выбор для преобразования моих объектов в мой DTO запрос больше не фильтруется.
Пример:
Этот запрос хорошо возвращает все элементы OrderItem с товаром, цена которого выше 100

Код: Выделить всё

var ordersAbove100 = context.Orders
.Include(o => o.OrderItems.Where(m => m.Price > 100))
.AsNoTracking()
.ToList();
Но когда я добавляю выбор для преобразования моих объектов в свой DTO, запрос больше не фильтруется, и все мои заказы возвращаются

Код: Выделить всё

var ordersDtoAbove100 = context.Orders
.Include(o => o.OrderItems.Where(m => m.Price > 100))
.Select(m => new OrderDto()
{
CustomerName = m.CustomerName,
Id = m.Id,
OrderDate = m.OrderDate,
Items = m.OrderItems.Select(item => new OrderItemDto()
{
Price = item.Price,
ProductName = item.ProductName,
Quantity = item.Quantity,
})
})
.AsNoTracking()
.ToList();

Полный пример: https://dotnetfiddle.net/tBgLP4
Почему .Select меняет поведение моего запроса? И как правильно этого добиться?
Я использую .NET9

Подробнее здесь: https://stackoverflow.com/questions/793 ... sformation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»