У меня есть 3 таблицы: субдоговоры, компании и контакты. Каждая таблица имеет active_status флаги, который показывает, что объект все еще активен (не был удален).
У меня есть форма субдоговора. На форме у меня есть выпадающий из контактов, которые хранятся в таблице контакта. В настоящее время выпадающие списки все контакты. Я хотел бы иметь выпадающее, только перечисляют контакты, которые принадлежат компании субдоговора или любому из филиалов той компании.
У меня есть следующий запрос, который я использую в другом месте в программе, чтобы передать company_id и получить его филиалы.
public IQueryable<company> GetSubsidiaryCompanies(Guid id)
{
return
from c in db.companies
where c.primary_company == id && c.active_status == true
select c;
}
Это - мой текущий выбор контакта
public IQueryable<contact> GetContacts()
{
return
from c in db.contacts
where c.active_status == true
orderby c.contact_name
select c;
}
То, что я должен сделать, передать его субдоговор company_id и затем только возвратить контакты где contact.company_id == subcontract.company_id
или contact.company_id ==
один из вспомогательных идентификаторов.
public IQueryable<contact> GetContacts(Guid id)
{
return
db.companies
.Where(c=>c.active_status == true)
.Where(c=>c.primary_company == id || c.company_id == id)
.SelectMany(c=>c.contacts);
}
public IQueryable<contact> GetActiveCompanies(Guid id)
{
return from c in db.companies
where c.active_status == true
&& (c.primary_company == id || c.company_id == id)
select c;
}
public IQueryable<contact> GetContacts(Guid id)
{
return GetActiveCompanies(id)
.SelectMany(c=>c.contacts);
}