我正在尝试编写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
- 2 回答
- 0 关注
- 229 浏览
添加回答
举报
0/150
提交
取消