我对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动态可能吗?还是另一个图书馆?我该怎么办
答案 0 :(得分:4)
有几种Dynamic LINQ软件包,所有软件包都支持不同的LINQ方法。
我建议使用EntityFramework.DynamicLinq。
首先是因为它在EF Core extensions(包含共享功能的System.Linq.Dynamic.Core软件包)中列出。
第二个也是更重要的一点,因为它支持您需要的FisrtOrDefault
方法:)
因此,以下内容适用于该软件包:
.Where("Childrens.OrderBy(exampleData).FirstOrDefault().moreData > 300")