MVC - Linq to SQL JOINS



我有一个接受字符串列表的控制器。字符串本质上是用户在视图上选择的 ID。我需要根据 to 表的字段构建模型,因此需要连接。下面的代码不会生成,因为它声称联接表中的属性不存在。它仅接受表 1 值。Item.Well_No,Item.Well_Name抛出错误。这些包含在我连接到"x"的"y"表中。

[HttpPost]
public ActionResult buildSelectionTable(List<string> dta)
{
var a = from x in db._AGREEMENTS
join y in db.WELL_AGMT_XREF on x.AGMT_NUM equals y.AGMT_NUM 
where dta.Contains(x.AGMT_NUM) 
select x;

List<AgmtModel> model = new List<AgmtModel>();
foreach (var item in a)
{
model.Add(new AgmtModel { Agmt_Name = item.AGMT_NAME, Agmt_Num = item.AGMT_NUM, Agmt_Type = item.AGMT_TYPE_DESCR, Amnt_Status = item.AGMT_STAT_DESCR, Company = item.CO_NAME, DaysToExp = item.DaysToExp, Drs_Url = item.DRS_URL, Effective_Date = item.EFF_DT, Orig_Lessee = item.ORIG_LESSEE, Prop_Status = item.AGMT_PROP_STAT_DESCR, Expiration_Date = item.EXPR_DATE, Acreage = item.LGL_AREA, Extention_Expiration = item.EXTN_EXPR_DT, WellNo = item.WELL_NO, Well_Name = item.WELL_NAME });
}
return PartialView("_SelectionTable", model);
}

您只在查询中选择x您还需要选择 y 并引用它。

select x更改为select new { x, y}

然后

foreach (var item in a)
{
model.Add(new AgmtModel { Agmt_Name = item.y.AGMT_NAME, Agmt_Num = item.x.AGMT_NUM ... });
}

您需要在字段之前插入.x.y以确定字段名称

或者,您实际上可以将构造函数直接放在查询中

所以而不是select x

select new AgmtModel { Agmt_Name = y.AGMT_NAME, etc...}

然后你可以return PartialView("_SelectionTable", a.ToList())

最新更新