gpt4 book ai didi

c# - 将表达式类与 LINQ 查询一起使用

转载 作者:行者123 更新时间:2023-11-30 14:50:31 27 4
gpt4 key购买 nike

我想知道是否有一种方法可以将 Expression 类用于带有 LINQ 查询的自定义查询,例如这个

Expression<Func<TEntity, bool>> expression = (x) => x.Id = 1

var items = from item in context.TEntity
where expression
select item

我知道有一种方法可以使用 LINQ 函数来执行此操作,因为 Where 函数将表达式作为参数,但我确实需要使用 LINQ 查询来执行此操作

注意:上面的代码只是一个示例,让您了解我正在尝试做的事情,它不是实际的工作代码

注意 2:我需要这个来与 Entity Framework 一起工作

最佳答案

不幸的是, Entity Framework 本身并不支持这种类型的表达式投影,这就是为什么像 where expression.Compile().Invoke(item); 这样的常见尝试会在运行时抛出异常.

但是,如果您使用 LinqKit库(利用表达式访问者)并在实体集上调用 .AsExpandable(),然后您可以动态调用表达式:

Expression<Func<TEntity, bool>> expression = x => x.Id == 1;

var items = from item in context.Set<TEntity>.AsExpandable()
where expression.Invoke(item)
select item;

关于c# - 将表达式类与 LINQ 查询一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com