2016-09-27 17 views
3

JOIN句に2番目の条件を追加する際にいくつかの記事がありましたが、常に1つの列リンクを別のインスタンスに追加していますが、列は一定の値に等しい。私が真似しようとしているRAW SQLは次のとおりです。LINQ JOINに2番目の条件を追加する

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 
} 

最初の二つが最後にleftth2は、左側の範囲内にないと言って失敗し、AND&&が有効でないと言って失敗します。

これを行う正しい方法は何ですか?

答えて

3

条件

tch2.WeekEndingDate = @PayPeriod 

は私に参加の一部のように感じることはありません - それは、二つの異なる行のデータを比較していません。それはJOIN句に配置されていますが、WHERE句の詳細ですSQLで、あなたの権利は

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

:それはあなたがにつながる、にに参加しているものの一部であるべきのようにそれは感じています。私はLINQを更新して、あなたの例に従ってWHEREを追加し、それが動作しています。私は、必要な時間が経過したときに回答としてマークします。ありがとうございました。 – Matthew

関連する問題