我已经开始尝试使用 LINQ 实现 IQueryable<T> 数据类型进行查询。例如,我制作了几个这样的函数(扩展方法不适用于特定的 IQueryable 实现,这只是一个临时细节):
public static IQueryable<T> Pow<T>(this IQueryable<T> values, T pow)
{
var e = BinaryExpression.Power(values.Expression, ConstantExpression.Constant(pow));
return values.Provider.CreateQuery<T>(e);
}
然后我认为将函数应用于 IQueryable 对象中的每个元素会很有用,但我不太清楚如何构造正确的表达式。方法签名可能如下所示:
public static IQueryable<T> Map<T>(this IQueryable<T> values, Expression<Func<T,T>> map)
{
Expression e = ...
return values.Provider.CreateQuery<T>(e);
}
我应该如何完成这个方法体?