带参数的命名参数

我有一个从数据库中获取值的方法。

public virtual List GetValues( int? parameter1 = null, int? parameter2 = null, int? parameter3 = null, params Expression<Func>[] include) { //... } 

如何使用命名参数调用此函数,以便在include之前不写入所有参数? 我想做这样的事情

 var userInfo1 = Unit.UserSrvc.GetValues(include: p => p.Membership, p => p.User); 

但这似乎不起作用? 如何在params中使用命名参数?

我认为唯一的方法是:

 GetValues(include: new Expression>[] { p => p.Membership, p => p.User }) 

哪个不是那么好。 如果你为此添加一个重载可能是最好的:

 public List GetValues(params Expression>[] include) { return GetValues(null, null, null, include); } 

然后你就像调用你的方法一样

 GetValues(p => p.Membership, p => p.User) 

params参数的工作方式类似于数组,请尝试以下语法:

 var userInfo1 = Unit.UserSrvc.GetValues(include: new Expression>[] { p => p.Membership, p => p.User }); 

(由于通用参数可能需要一些调整,但我认为你得到了它的要点)