2016-09-27 2 views
3

Я осмотрел и нашел несколько сообщений о добавлении второго условия в предложение JOIN, но они всегда являются экземплярами одной ссылки на столбец, но в моем случае мне нужно просто иметь столбец равный определенному значению. RAW 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 он помещается в РЕГИСТРИРУЙТЕСЬ пункте, но это больше ИНЕКЕ. Я обновил свой LINQ, добавив WHERE, следуя вашему примеру, и он работает. Я буду отмечать как ответ, когда наступит необходимое время. Спасибо. – Matthew