在LINQ JOIN中添加第二个条件,

时间:2016-09-27 15:35:13

标签: c# linq

我环顾四周,发现了一些关于向JOIN子句添加第二个条件的帖子,但它们总是有一个列链接到另一个的实例,但在我的实例中我需要一个列等于某个值。我试图模仿的RAW SQL是:

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不在左侧范围内。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

条件

<?php echo $this->render("../ads/_search", ['model' => $model]); ?>

<?php Pjax::begin(); ?>

<?= GridView::widget([

    'dataProvider'  => $dataProvider,
    'filterModel'   => $model,
    'showOnEmpty'   => false,
    'summary'       => '',
    'showFooter'    => false,
    'showHeader'    => false,
    'columns'       => [
        'name',
        'type',
        'explanation',
        'address',
        'province_name',
        'cost',
    ],

]);?>

<?php Pjax::end(); ?> 

不喜欢加入我的一部分 - 它不是比较两个不同行中的数据。感觉它应该是您加入 的一部分,导致:

tch2.WeekEndingDate = @PayPeriod