c# - 将第一个 child 与 linq dynamic 进行比较

标签 c# entity-framework linq dynamic

我是linq dynamic 的新手|我需要翻译一个简单的 linq 查询

假设我有这个类(class)

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;}
}

我需要在表格中显示父属性和第一个子属性(按顺序排序),我这样做没问题,问题是我还需要过滤它(只有排序后的第一个结果) .

问题是,我需要过滤 Parent 列表而不是过滤子列表,只比较第一个

例如,使用普通的 linq,我可以做这样的事情

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

linq dynamics 有可能吗?还是另一个图书馆?我该怎么做

最佳答案

有几个 Dynamic LINQ 包,都支持不同的 LINQ 方法。

我建议使用 EntityFramework.DynamicLinq .

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

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

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

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

关于c# - 将第一个 child 与 linq dynamic 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53500455/

相关文章:

c# - 如何从 linq 查询中获取所有元素?

c# - 使用 c# 调用数据库时出现 System.String ToString() 错误

c# - 如何从XNode读取数据

c# - 在 LINQ c# 中按 rollno 文本排序?

c# - 内联函数的 32 字节限制...不是太小了吗?

c# - 多次单击按钮时如何防止应用程序挂起?

c# - 带列表框的 ContentPresenter

c# - EF6 重试过程为 SqlQuery 命令抛出 "The SqlParameter is already contained by another SqlParameterCollection"

c# - Dal(带有 Entity Framework )和模型层进入 MVC

c# - Entity Framework 在调用 SaveChanges 时创建新记录