Linq中的Generic Select子句

时间:2012-06-27 05:40:30

标签: .net linq entity-framework generics entity-framework-4

我见过通用存储库模式here。我试图添加我想要作为参数从调用函数发送的泛型select子句。我修改了

public T GetSingle(Expression<Func<filter, bool>> filter) to 
public T GetSingle(Expression<Func<filter, bool>> filter,Expression<Func<T, T>> Selct)

现在我想调用这个方法。我该如何发送我的选择表达式

return rep.GetSingle(p => p.Slug == slug,???)

2 个答案:

答案 0 :(得分:3)

目前,您的方法无法更改结果类型。我怀疑那不是你想要的。我希望你希望你的方法是通用的,例如。

public TResult GetSingle<TResult>(Expression<Func<T, bool>> filter,
                                  Expression<Func<T, TResult>> projection)

然后用这样的话来打电话:

// The type argument is inferred from the second lambda expression
string x = repository.GetSingle(p => p.Slug == slug, p => p.FirstName);

答案 1 :(得分:0)

方法中的第二个参数必须是另一个lambda,其中输入为T且必须返回T.