0

我有接收类型和表达式的类(没有 TDeligate)。我知道表达式基于:Expression<Func<T, bool>>但我没有T. 相反,我有Type. 我需要的是针对列表执行表达式并返回结果的子列表。类似的东西list.Where(Expression)。这是方法:

public IEnumerable Query(Type type, Expression exp) {
    var list = GetListByType(type);
    return list.Where(exp); // << How do I make this happen?
}

编辑#1

我设法将我的表达式转换为 LambdaExpression(正如威廉建议的那样),如下所示:

var d = Expression.Lambda(exp).Compile();

现在我的问题是:d上面的计算结果为Func<Category, bool>(在哪里CategoryT。现在,如果我尝试执行此操作:return list.Where(d);编译器会说:

无法从用法中推断出类型参数。尝试明确指定类型参数。

问题是我无法d转换,Func<T, bool>因为我没有T.
正如我一开始提到的,我没有T,我有typeof(T)
铸造dFunc<object, bool>没有奏效。

任何想法如何解决这个问题?

d我该如何实际执行list

编辑#2(解决方法/解决方案)

我最终生成了一些 CodeDom 来解决这个问题。
如果有人找到更漂亮的解决方案,我真的很想听听。

4

0 回答 0