比较第一个孩子和linq dynamic

时间:2018-11-27 13:08:25

标签: c# entity-framework linq dynamic

我对linq dynamic很陌生,我需要翻译一个简单的linq查询

假设我有此类

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 :(得分:4)

有几种Dynamic LINQ软件包,所有软件包都支持不同的LINQ方法。

我建议使用EntityFramework.DynamicLinq

首先是因为它在EF Core extensions(包含共享功能的System.Linq.Dynamic.Core软件包)中列出。

第二个也是更重要的一点,因为它支持您需要的FisrtOrDefault方法:)

因此,以下内容适用于该软件包:

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