【发布时间】:2012-04-09 23:52:40
【问题描述】:
我有一个可以分配给它的单个用户或工作组的对象。可以直接或通过工作组分配用户,但对象永远不能同时设置两者。
public class Procedure
{
.....
public Guid? AssignedToId {get;set;} //Foreign Key to AssignedTo
public Contact AssignedTo {get;set;} //Single user assignment
public Guid? AssignedWorkGroupId {get;set;} //Foreign Key to AssignedWorkGroup
public WorkGroup AssignedWorkGroup {get;set;} //Multiple user assignment
public Guid? AssignedBuisnessPartnerId {get;set;}
public BusinessPartner AssignedBuisnessPartner {get;set;}
}
我试图弄清楚如何编写一个查询,我可以在其中找到可以直接分配用户或者是分配的工作组的一部分的过程。目前我有 2 个单独的查询并结合我返回的列表。哪个有效,但可能效率不高。
这是我现在拥有的:
var procedures = _procedureRepository.Get(p => p.AssignedToId == assignedId).ToList();
procedures.AddRange(_procedureRepository.Get(p => p.AssignedWorkGroup.Contacts.Select(c => c.Id).Contains(assignedId) || p.AssignedBuisnessPartner.Contacts.Select(c => c.Id).Contains(assignedId));
【问题讨论】:
-
如果您向我们展示您的两个查询将会很有帮助
标签: linq entity-framework lambda entity-framework-4.1