我有一种从数据库中获取值的方法。
public virtual List<TEntity> GetValues(
int? parameter1 = null,
int? parameter2 = null,
int? parameter3 = null,
params Expression<Func<TEntity, object>>[] include)
{
//...
}
如何使用命名参数调用此函数,以便在include
之前不写入所有参数?
我想做这样的事情
var userInfo1 = Unit.UserSrvc.GetValues(include: p => p.Membership, p => p.User);
但这似乎不起作用? 如何使用带参数的命名参数?
答案 0 :(得分:12)
我认为唯一的方法是:
GetValues(include:
new Expression<Func<TEntity, object>>[] { p => p.Membership, p => p.User })
哪个不是那么好。如果你为此添加了一个重载可能是最好的:
public List<Entity> GetValues(params Expression<Func<Entity, object>>[] include)
{
return GetValues(null, null, null, include);
}
然后你就像
一样调用你的方法GetValues(p => p.Membership, p => p.User)
答案 1 :(得分:8)
params
参数的作用类似于数组,请尝试以下语法:
var userInfo1 = Unit.UserSrvc.GetValues(include: new Expression<Func<TEntity, object>>[] { p => p.Membership, p => p.User });
(由于通用参数可能需要一些调整,但我认为你得到了它的要点)