为了账号安全,请及时绑定邮箱和手机立即绑定

LINQ SQL表达式排除其他表中存在的数据

LINQ SQL表达式排除其他表中存在的数据

C#
交互式爱情 2021-05-13 14:16:29
我正在尝试编写LINQ查询以返回尚未分配的用户名列表。我的Usernames桌子看起来像这样:Id | Username  1  | user.12  | user.23  | user.3该Assignments表仅包含用户名,旁边还有一些其他数据:Username | SomeOtherDatauser.1   | foouser.3   | bar我尝试编写的LINQ查询应该user.2在以上示例中返回。不幸的是,我的查询返回了太多用户,我不确定如何调整LINQ表达式:from u in Usernames    join a in Assignments on u.Username equals a.Username    where u.Username != a.Username    select u添加Distinct()方法可过滤结果集,但仍返回分配的用户名:(from u in Usernames    join a in Assignments on u.Username equals a.Username    where u.Username != a.Username    select new { u }).Distinct()调整这些LINQ表达式以仅返回那些不在分配表中的用户名的最佳方法是什么?
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您需要使用DefaultIfEmpty进行左连接。如下所示:


from u in Usernames 

join a in Assignments on u.Username equals a.Username into userAssignments

from ua in userAssignments.DefaultIfEmpty()

    where ua == null

    select u


查看完整回答
反对 回复 2021-05-21
  • 2 回答
  • 0 关注
  • 210 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信