2016-09-27 57 views
3

我環顧四周,發現有一些關於向JOIN子句添加第二個條件的帖子,但他們總是有一個列鏈接到另一個的實例,但在我的實例中,我只需要一個列等於一定的值。原始SQL我試圖模仿是:在LINQ JOIN中添加第二個條件,

LEFT OUTER JOIN dbo.TimeCardHeader AS tch2 on tch1.EmployeeID = tch2.EmployeeID && tch2.WeekEndingDate = @PayPeriod 

正如你可以看到我的第二個連接條件是從表中的列值相匹配的變量。我試過以下的LINQ隊列,但都失敗了。

join leftth2 in db.TimeCardHeaders on th1.EmployeeID equals leftth2.EmployeeID AND leftth2.WeekEndingDate == PayPeriod into leftjointh2 

join leftth2 in db.TimeCardHeaders on th1.EmployeeID equals leftth2.EmployeeID && leftth2.WeekEndingDate == PayPeriod into leftjointh2 

join leftth2 in db.TimeCardHeaders on new 
{ 
    employeeID = th1.EmployeeID, 
    weekEndingDate = leftth2.WeekEndingDate 
} equals new 
{ 
    employeeID = leftth2.EmployeeID, 
    weekEndingDate = PayPeriod 
} 

前兩個失敗說AND&&無效,最後的失敗說leftth2是不是在左側的範圍。

這樣做的正確方法是什麼?

回答

3

tch2.WeekEndingDate = @PayPeriod 

不覺得像加入到我的一部分條件 - 在兩個不同的排它沒有比較的數據。這感覺就像它應該是你在加入什麼的一部分,從而導致:

join leftth2 in db.TimeCardHeaders.Where(p => p.WeekEndingDate == PayPeriod) 
    on th1.EmployeeID equals leftth2.EmployeeID into leftjointh2 
+0

您的權利,在SQL它被放置在JOIN子句中,但它更是一個WHERE子句。我已經更新了我的LINQ,添加了WHERE以下示例,它正在工作。當所需的時間過去後,我會標記爲答案。謝謝。 – Matthew