2016-07-13 14 views
0

ラムダ式を使用したLINQクエリの作成に問題があります。私は2つのテーブルを結合し、いくつかの条件を作る必要があります。私は2つのテーブルMSRとBOMDetailを持っています。LINQ JOIN with WHERE条件

MSRには、MSRID、PN、Buyer、Plant EditDate列がありました。 BomDetailには、BOMID、PN、AltQty、Plant、EditDateという列がありました。

そして私はこのクエリをLINQに書く必要があります。

私は2つの条件を作る必要があります.PNはテーブルとプラントの間でも同じでなければなりません。 asp.net MVCに結果ViewModelがあります。

public class MSRViewModel 
{ 
    public string PN { get; set; } 
    public string Buyer { get; set; } 
    public string Plant { get; set; } 
    public DateTime EditDate { get; set; } 

} 

そして、ここでは私のサンプルである、それが正常に動作しますが、私はbd.Plant = MSR.Plantのための第二の条件を記述する必要があります。ここで、iは知りません。

var data = DbContext.BomDetails.Where(x => !string.IsNullOrEmpty(x.AltQty)) 
         .Join(DbContext.MSRs 
         , bd => bd.PN, 
         msr => msr.PN, 
         (bd, msr) => new MSRViewModel 
         { 
          PN = msr.PN, 
          Buyer = msr.Buyer, 
          Plant = msr.Plant, 
          EditDate = msr.EditDate 
         }).ToList().AsEnumerable(); 

ありがとう。

答えて

1

次のようにあなたはこれを行うことができます。

var data = DbContext.BomDetails.Where(x => !string.IsNullOrEmpty(x.AltQty)) 
        .Join(DbContext.MSRs 
        , bd => new { bd.PN, bd.Plant }, 
        msr => new { msr.PN, msr.Plant }, 
        (bd, msr) => new MSRViewModel 
        { 
         PN = msr.PN, 
         Buyer = msr.Buyer, 
         Plant = msr.Plant, 
         EditDate = msr.EditDate 
        }).ToList().AsEnumerable(); 
+0

ああ感謝を。それはうまく動作します。あなたは私を助けてくれる。 – tomas