如何使用where子句将此循环放入单行linq语句中。
TABLE_NAME=Table
FIELD_NAME=Field
COMBOBOX_NAME=Combo Box
答案 0 :(得分:1)
尝试这样的事情:
List<User> users = db.Users.Where(user => user.Roles.Any(r => r.Name == role)).ToList();
如果您想比较角色名称,则会出现这种情况,否则会实施Equal
方法
答案 1 :(得分:0)
这是您的答案,但您应该避免使用包含,而是过滤ID,以获得效果。
// Solution 1
List<User> users = db.Users.Where(u => u.Roles.Contains(role)).ToList();
// Solution 2
List<User> users = db.Users.Where(u => u.Roles.Any(r => r.Id == role.Id)).ToList();
答案 2 :(得分:-1)
您必须先定义可能的角色列表。通过调用Contains,EF生成一个IN(...)子句。
var roles = new[] {"Role1", "Role2"};
var users = db.Users.Where(u => u.Roles != null && roles.Contains(u.Roles));