我在让我的 LINQ 查询按我想要的方式输出时遇到问题。我不确定我是否采取了正确的方法。
表:
我有两个表Contacts
,Permissions
我用它们执行LEFT OUTER JOIN。
加盟查询:
from contact in Contacts
join permission in Permissions on contact.Id equals permission.ObjectId into permissionGrp
from p in permissionGrp.DefaultIfEmpty()
where (p==null && isAllowed) || (p!=null && /* ... further conditions */))
orderby /* ... ordering removed */
select new { contact, permission = p };
这会将权限与联系人匹配(如果适用,并且null
不存在匹配的权限)。
期望的
我不希望有重复的联系人,我只对第一个 Contact-Permission 记录感兴趣。像这样:
试图:
所以我假设我需要Group By
我的contact.Id
并以某种方式选择FirstOrDefault()
权限集合。
from contact in Contacts
join permission in Permissions on contact.Id equals permission.ObjectId into permissionGrp
from p in permissionGrp.DefaultIfEmpty()
where (p==null && isAllowed) || (p!=null && /* ... further conditions */))
orderby /* ... ordering removed */
group p by contact into contactPermissionsGrp
select new { contact = contactPermissionsGrp.Key, permission = contactPermissions.FirstOrDefault() };
结果:
不幸的是,这会导致NotSupportedException: Specific method is not supported.
. 但我不确定我的方法是正确的还是LightSpeed ORM 的限制。
任何建议将不胜感激。