Получить сущность со всеми ее потомками, которые удовлетворяют определенному условию - PullRequest
1 голос
/ 22 сентября 2019

Просто отказ от ответственности, об этом, возможно, уже спрашивали, но я действительно не знал, что искать.

Так что в основном у меня есть следующая модель:

public class Car
{
    public int Id { get; set; }

    public string UniqueName { get; set; }

    public List<Feature> Features { get; set; }
}

public class Feature
{
    public int Id { get; set; }

    public string Name { get; set; }

    public decimal Price { get; set; }
}

Позволяетскажем, я хочу получить автомобиль, который UniqueName равен Bentle, но только с Features, который стоит меньше 100 $.

Я мог бы сделать что-то вроде этого:

var car = DbContext.Cars.FirstOrDefault(x=> x.UniqueName == "Bentle");
car.Features = car.Features.Where(x=> x.Price <= 100).ToList();

Это действительно работает, но мне кажется, что это много ненужных конверсий.Есть ли способ сократить этот запрос?

Несколько требований:

  • Мне нужен Car Сам объект
  • Список Features содержит толькоFeatures стоимостью менее 100 $

1 Ответ

1 голос
/ 22 сентября 2019

Хотя я не вижу ненужных преобразований в вашем запросе, но вы можете попробовать следующее, если хотите выполнить запрос в одну строку:

var car = DbContext.Cars.Where(x=> x.UniqueName == "Bentle").Select(car =>
          new Car()
          { 
            Features = car.Features.Where(x=> x.Price <= 100),
            .
            .
            /*here copy the remaining properties of car object*/
          }).FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...