1

我已经开始尝试使用 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);
}

我应该如何完成这个方法体?

4

2 回答 2

4

在我看来,您正在发明Select。我看不出您的 Map 和 Select 已经做了什么之间的区别。它基于表达式和初始 IQueryable<T> 返回一个 IQueryable<U>。

对于 Reduce/Fold 之类的内容,请参阅Queryable.Aggregate函数。

于 2009-02-12T14:31:17.403 回答
1

您正在寻找.Select()方法

于 2009-02-12T14:27:26.990 回答