0

我对 ASP.Net MVC 和 Entity 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 只包含与组织匹配的选项?

提前感谢您的帮助!

4

1 回答 1

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

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

于 2013-07-11T10:32:48.417 回答