Я опубликовал пару вопросов о фильтрации в запросе на загрузку, и я полагаю, что EF не поддерживает фильтрацию внутри оператора Include
, поэтому я придумал это.
Я хочу выполнить простой запрос, в котором получить ChildProdcut
по номеру sku и PriceTiers
, отфильтрованные по IsActive
.
Dim ChildProduct = ChildProductRepository.Query.
Where(Function(x) x.Sku = Sku).
Select(Function(x) New With {
.ChildProduct = x,
.PriceTiers = x.PriceTiers.
Where(Function(y) y.IsActive).
OrderBy(Function(y) y.QuantityStart)
}).Select(Function(x) x.ChildProduct).Single
Есть ли более эффективный способ сделать это? Я на правильном пути вообще? Это работает.
Еще одна вещь, которую я действительно не понимаю, почему это работает? Вам просто нужно загрузить граф объектов, и EF обнаружит это и увидит, что эти коллекции принадлежат ChildProduct, даже если они находятся внутри анонимного типа?
Кроме того, каковы стандарты форматирования длинного выражения LINQ?