1

我在这里看到了通用存储库模式。我正在尝试添加我想从调用函数作为参数发送的通用选择子句。我修改了

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,???)
4

2 回答 2

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);
于 2012-06-27T05:48:50.310 回答
0

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

于 2012-06-27T05:44:35.850 回答