我对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只包含与组织匹配的选项?
提前感谢您的帮助!
答案 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
应该这样做,请记住我还没有测试过那个