c# - 如何将函数应用于 IQueryable 实例?

标签 c# linq iqueryable

我已经开始尝试实现 IQueryable 数据类型以使用 LINQ 进行查询。例如,我做了几个这样的函数(这只是一个临时细节,扩展方法不适用于特定的 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);
}

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

最佳答案

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

对于类似 Reduce/Fold 的内容,请参阅 Queryable.Aggregate功能。

关于c# - 如何将函数应用于 IQueryable 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/541409/

相关文章:

c# - 在 MultiScaleImage 上保持相对位置

c# - 使用 LINQ 计算特定列的总和

c# - 在 Include 语句中使用 Where 子句的 Linq 查询

c# - 为什么分页的 LINQ IQueryable 性能如此差?

c# - 从 GET 更改为 POST jquery ajax 调用 c#

c# - C# 中的简单状态机示例?

c# - Html Agility Pack c# 段落解析问题

c# - SQL 查询 CAST 到 int + 1 到 LINQ

c# - 动态 LINQ,Select 函数,适用于 Enumerable,但不适用于 Queryable

.net - Silverlight、EDM/LINQ 和 WCF Web 服务 - 如何将集合传递给 Silverlight