基于三个不同的表填充SelectList

时间:2013-07-11 09:50:01

标签: c# asp.net-mvc-3 entity-framework

我对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只包含与组织匹配的选项?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

   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

应该这样做,请记住我还没有测试过那个