以下是我的ERD和样本数据。注意,我首先使用Entity Framework和Code来控制我的数据库。
对于名为假期的项目,请返回 UserBooleanAttributes 表中具有“true”值的所有 DISTINCT 用户 UserAttributes 表中定义的
这是我目前的尝试:
var myQuery =
from P in context.Projects
join UA in context.UserAttributes on P.ProjectID equals UA.ProjectID
join UBA in context.UserBooleanAttributes on UA.UserAttributeID equals UBA.UserAttributeID
join U in context.Users on UBA.UserID equals U.UserID
where P.ProjectID == 1
where UBA.Value == true
where (UA.UserAttributeID == 1 || UA.UserAttributeID == 2)
select new { uba = U };
这将返回6个用户, e@acme.org 列出两次。是否有LINQ方式返回不同的值?我想我可以将其转换为列表然后过滤,但我宁愿让数据库完成工作。
如果可能的话,我宁愿避免使用lambda表达式。再一次,我希望数据库能够完成工作,而不必将代码写入union / intersect结果组。