我有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;
}
我需要做的是将它传递给subcontract.company_id,然后只返回其中一个辅助ID contact.company_id == subcontract.company_id
或contact.company_id ==
的联系人。
答案 0 :(得分:2)
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);
}
答案 1 :(得分:0)
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);
}