У меня есть объект, которому можно назначить одного пользователя или рабочую группу.Пользователь может быть назначен напрямую или через рабочую группу, но объект никогда не может быть установлен обоими.
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));