繁体   English   中英

Lambda Linq不加入C#

[英]lambda linq not join c#

我有这样的查询,返回其我的用户名userid是在accessusers ,我要的是给我回那些userid谁在没有用户的access

 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

与SQL脚本等效的lambda expression是什么?

使用Except

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

您也可以使用! Contains() ! 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));
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");

最后,这是正确的答案,唯一的不同是第一行。

谢谢你们!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM