【问题标题】:lambda linq not join c#lambda linq 不加入 c#
【发布时间】:2013-03-12 12:44:30
【问题描述】:

我有这个查询返回useridaccess 表和users 中的用户的名称,我想要将那些不在@987654325 中的用户的userid 还给我@.:

 var query = db.Users
      .Join(db.Access, c => c.UserId, o => o.UserId,
       (c, o) => new { c.UserId, c.Name });

在 sql 中会是这样的:

SELECT  Users.Name
FROM     Access INNER JOIN
               Users ON Access.UserId <> Users.UserId

什么是lambda expression相当于sql脚本?

【问题讨论】:

    标签: c# sql linq lambda


    【解决方案1】:

    使用Except

    var res = db.Access.Except(query);
    

    【讨论】:

      【解决方案2】:

      您也可以使用! Contains(),如下所示:

      //Get Access user ids into an array
      var AccessUserIds = db.Access.Select(a => new {a.UserId}).ToArray();
      
      //Users who are not in Access user id array
      var Results = db.Users.Where(u => !AccessUserIds.Contains(u.UserId));
      

      【讨论】:

        【解决方案3】:
        var exclude = db.Access.Select(p => p.UserId);
        
        
        var us = db.Users.Where(q => !exclude.Contains(q.UserId)).ToList();
        
        
        ViewBag.UsersId = new SelectList(us, "UserId", "Name");
        

        最后那是正确的答案,唯一的区别就在第一行。

        谢谢大家!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-21
          • 1970-01-01
          • 1970-01-01
          • 2017-06-09
          • 2017-07-04
          • 2011-02-15
          • 1970-01-01
          相关资源
          最近更新 更多