基于三个不同的表填充SelectList
本文关键字:填充 SelectList 于三个 | 更新日期: 2023-09-27 18:22:06
我对ASP.Net MVC和Entitity Framework都没有太多经验。
问题如下:我确实有税务代码集、组织的数据库表和"DisplayData"表,其中包含哪些集与哪个组织链接的信息。返回所有组织和所有税法集效果非常好。但现在我应该能够建立基于所选组织的税法列表。
到目前为止,相关代码如下:
IEnumerable<TaxCodes> taxcodelist = null;
IEnumerable<Organizations> orglist = null;
IEnumerable<DisplayData> taxcodeids = null;
model.OrgId = Convert.ToInt64(Request.QueryString["OrgId"]);
if (model.OrgId == 0)
model.OrgId = 1;
taxcodelist = db.TaxCodes.AsNoTracking().Distinct().OrderBy(s => s.Id).ToList();
orglist = db.Organizations.AsNoTracking().Distinct().OrderBy(s => s.org_id).ToList();
taxcodeids = db.DisplayData.Where(s=>s.CompanyId == model.OrgId).ToList();
model.TaxCodeList = new SelectList(taxcodelist, "ID", "Name");
model.OrgList = new SelectList(orglist, "org_id", "org_name");
好吧,这是可行的,但真正的问题是如何使我的TaxCodeList只包括与组织匹配的选项?
感谢您的提前帮助!
尝试类似的东西
taxcodeids = db.DisplayData.Where(s=>s.CompanyId == model.OrgId).ToList();
taxcodelist = db.TaxCodes.AsNoTracking().Distinct().Where(x=> taxcodeids.Contains(y => y.ID == x.TAX_CODE_ID)).OrderBy(s => s.Id).ToList();
orglist = db.Organizations.AsNoTracking().Distinct().OrderBy(s => s.org_id).ToList();
model.TaxCodeList = new SelectList(taxcodelist, "ID", "Name");
model.OrgList = new SelectList(orglist, "org_id", "org_name");
有更清洁的方法可以做到这一点,现在将对此起作用
from dd in db.DisplayData
join tc in db.TaxCodes on dd.TAX_CODE_ID equals tc.ID
where dd.CompanyId == model.OrgId
select tc
应该这样做了,记住我还没有测试过