MVC - Linq to SQL JOINS

时间:2017-07-21 13:02:06

标签: asp.net-mvc linq-to-sql

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

的表格
[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);
    }

1 个答案:

答案 0 :(得分:1)

您只需在查询中选择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())