如何将每个循环的对象列表属性转换为linq语句

时间:2017-06-29 14:48:54

标签: c# entity-framework linq

如何使用where子句将此循环放入单行linq语句中。

TABLE_NAME=Table
FIELD_NAME=Field
COMBOBOX_NAME=Combo Box

3 个答案:

答案 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));