[英]lambda linq not join c#
我有這樣的查詢,返回其我的用戶名userid
是在access
表users
,我要的是給我回那些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.