2016-07-13 108 views
0

我有一個與lambda表達式創建LINQ查詢的問題。我需要加入兩張桌子並提出一些條件。我有兩個表MSR和BOMDetail。LINQ JOIN與WHERE條件

MSR有theese列 - > MSRID,PN,Buyer,Plant EditDate。 BomDetail有這些列 - > BOMID,PN,AltQty,Plant,EditDate。

而我需要將這個查詢寫入LINQ。

SELECT MSR.PN, Buyer, MSR.EditDate, MSR.Plant FROM MSR 
JOIN BomDetail bd ON MSR.PN = bd.PN AND MSR.Plant = bd.Plant 
WHERE LEN(ISNULL(bd.AltQty,''))>0 

我需要做2個條件PN必須等於表和Plant之間。 我有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第二個條件。

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