2017-07-21 18 views
0

私は、文字列のリストを受け付けるコントローラを持っています。これらの文字列は基本的にユーザーがビュー上で選択するIDです。フィールドからテーブルに基づいてモデルを構築する必要があるため、結合が必要です。結合されたテーブルのプロパティが存在しないと主張しているので、ベローコードは作成されません。表1の値のみを受け入れます。 Item.Well_NoおよびItem.Well_Nameがエラーをスローします。あなたが唯一のあなたはまた、Y選択し、それを参照する必要があなたのクエリにxを選択しているMVC - Linq to SQL JOINS

[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); 
    } 
+0

ことができます。私はこれらに1対1で参加することはできません... – LCaraway

答えて

1

これらは、..私は、「X」に参加し、「Y」の表に含まれています。

変更select xselect new { x, y}

、あなたが代わりにあなたが実際にコンストラクタを直接入れることができ、フィールド名

を決定するためにフィールドあなたの前.x.yを挿入する必要があり、その後

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

されるようにクエリの中で

012の代わりに

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

は次に、あなただけの二重の私のテーブルをチェックするだけでreturn PartialView("_SelectionTable", a.ToList())