我目前的方法:
public static IEnumerable<ApplicationUser> GetListByRole(string role)
{
using (AppDbContext db = new AppDbContext())
{
return db.Users.Where(u => u.Roles.Any(r => r.Role.Name == role) && u.DateDeleted == null).ToList<ApplicationUser>();
}
}
我希望能够GetListByRole("Admin", "User")
或GetListByRole("Admin")
。
构造方法参数的最佳方法是什么?我使用字符串[]吗?如果是这样,我将如何更改LINQ查询?
谢谢!
答案 0 :(得分:0)
您可以使用Contains
方法:
public static IEnumerable<ApplicationUser> GetListByRole(params string[] roles)
{
using (AppDbContext db = new AppDbContext())
{
return db.Users
.Where(u => roles.Contains(u.Role.Name) &&
u.DateDeleted == null)
.ToList<ApplicationUser>();
}
}
params keyword
允许您在不创建数组的情况下传递角色名称。但是您应该知道它还允许您传递0
参数..