2009-02-12 15 views
1

我已經開始玩一點了,實現一個IQueryable <T>數據類型以使用LINQ進行查詢。比如我做了幾個這樣的功能(這只是一個暫時的細節,擴展方法不是特定的IQueryable的執行):如何將函數應用於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); 
} 

我該如何完成此方法正文?

+0

這將如何不同於values.Select(map)? – 2009-02-12 14:30:29

回答

4

在我看來,你正在發明Select。我沒有看到你的地圖和Select已經做了什麼之間的區別。它根據表達式和初始IQueryable返回一個IQueryable <U> T >。

對於像Reduce/Fold這樣的東西,請參閱Queryable.Aggregate函數。

+0

看起來你是對的。我想我應該遵循幾個教程而不是實現隨機的東西;) – 2009-02-12 15:18:36

1

您正在尋找.Select()方法

相關問題