基于三个不同的表填充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只包括与组织匹配的选项?

感谢您的提前帮助!

基于三个不同的表填充SelectList

尝试类似的东西

   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

应该这样做了,记住我还没有测试过