gpt4 book ai didi

c# - 使用未知类型动态构建 LINQ 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:30 25 4
gpt4 key购买 nike

我想知道是否可以使用这个表达式构建器类动态生成 lambda 表达式,其中要过滤的类型在编译时是未知的。

我有一个构造表达式的方法,

public static Expression<Func<T, bool>> GetExpression<T>(IList<QueryFilter> filters)

还有一个 QueryFilter 对象,

public class QueryFilter 
{
public string PropertyName { get; set; }
public ExpressionType OpType { get; set; }
public object Value { get; set; }
}

您可以在其中生成使用传入的 QueryFilters 过滤对象 T 的新表达式。我想开发一种类型未知的方法,即。

public static Expression<Func<T,bool>> GetExpression(IList<QueryFilter> filters, Type type)

所以我可以将类型作为参数传递给 System.Reflection,而不必在代码中指定它。例如,沿着这些方向的东西,

    public static Expression NewExpression(IList<QueryFilter> filters, Type T)
{
return GetExpression<Type>(filters);
}

是否可以在 Type 替换通用“T”的地方使用此语法?由于我不认为我可以在 < > 括号内指定运行时动态类型,是否有另一种方法,也许使用

Func<object,bool> 

代替?

最佳答案

尝试使用 DynamicExpression.ParseLambda

关于c# - 使用未知类型动态构建 LINQ 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4566545/

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