Foreach,从列表中插入LINQ中的多个列

时间:2017-03-15 10:40:48

标签: c# linq

所以我有一个表LNK_USER_ROLE,其中我将用户分配给各自的角色ID。

在这种情况下,我尝试同时分配" ADMIN"和"用户"角色给用户。因此,我从角色表中查询角色的ID,以便我可以将它们与用户ID一起添加到我的LNK_USER_ROLE表中。 (LNK_USER_ROLE ROLE_IDID db中ROLE的外键

var db = new MySqlContext();

List<int> RoleId = db.ROLES.Where(u => u.ROLE_NAME == "ADMIN" && u.ROLE_NAME == "USER").Select(u => u.ROLE_ID).ToList();


        foreach(int id in RoleId)
        {
            LNK_USER_ROLE Roles = new LNK_USER_ROLE();
            {
               Roles.ROLE_ID = id;
               Roles.USER_ID = db.USERS.Where(u => u.EMAIL == model.Users.EMAIL && u.NAME == model.Users.NAME).Select(u => u.USER_ID).Single();
            };

       db.LNK_USER_ROLE.Add(Roles);
       }
db.SaveChanges();

不幸的是,没有任何反应!正如你所看到的,如果这段代码成功,我最有可能在我的表中添加2行..但是我不知道我应该如何使用Foreach插入行,我似乎无法找到符合我需要的先前问题。

1 个答案:

答案 0 :(得分:0)

问题在于And(&&)和Or(||)运算符。

该查询正在尝试选择ROLE_NAME等于“&#39; ADMIN&#39;和&#39;用户&#39;在同一时间。

更改查询

List<int> RoleId = db.ROLES.Where(u => u.ROLE_NAME == "ADMIN" && u.ROLE_NAME == "USER").Select(u => u.ROLE_ID).ToList();

List<int> RoleId = db.ROLES.Where(u => u.ROLE_NAME == "ADMIN" || u.ROLE_NAME == "USER").Select(u => u.ROLE_ID).ToList();

将导致选择ROLE NAME等于&#39; ADMIN&#39;或者&#39; USER&#39;

实施例: https://dotnetfiddle.net/xju2Wo