【发布时间】:2013-12-11 12:43:03
【问题描述】:
我在输出我想要的 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 的限制。
任何建议将不胜感激。
【问题讨论】:
标签: c# mysql linq lightspeed