Сравните первого ребенка с динамическим linq - PullRequest
0 голосов
/ 27 ноября 2018

Я довольно новичок с linq dynamic , и мне нужно перевести простой запрос linq

Supossing У меня есть эти классы

public class Parent
{
   public int Id {get;set;}
   public ICollection<Child> Childrens {get;set;}
}

public class Child
{
   public decimal exampleData {get;set;}
   public decimal moreData {get;set;}
}

Мне нужно показатьв таблице, родительские свойства и первое дочернее свойство (отсортированный desc), у меня нет проблем с этим, проблема в том, что мне также нужно отфильтровать его (только первый результат после упорядочивания).

Дело в том, что мне нужно отфильтровать Parent список, не фильтруя детей, просто сравнив первый

С обычным linq я могу сделать что-то вроде этого, например

List<Parent> result =  db.Parent.Where(c => c.Childrens.OrderBy(c => c.exampleData).FirstOrDefault().moreData > 300).ToList()

Возможно ли этос динамикой linq?или другая библиотека?как я могу это сделать

1 Ответ

0 голосов
/ 27 ноября 2018

Существует несколько пакетов Dynamic LINQ, все с поддержкой различных методов LINQ.

Я бы предложил использовать EntityFramework.DynamicLinq .

Во-первых, потому что он указан в Расширениях EF Core (пакет System.Linq.Dynamic.Core , который содержит общие функциональные возможности).

Второе и более важное, потому что он поддерживает необходимый метод FisrtOrDefault:)

Таким образом, с этим пакетом работает следующее:

.Where("Childrens.OrderBy(exampleData).FirstOrDefault().moreData > 300")
...