我见过通用存储库模式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,???)
答案 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.