如何在带有连接的EF Where()子句中使用表达式树?

时间:2013-11-14 05:05:41

标签: c# entity-framework linq-to-sql expression-trees

我正在尝试在我的linq中使用表达式树来进行SQL查询。我使用EF5

我写了一个像这样的方法:

    private Expression<Func<Tbl1, bool>> Expr1()
    {              
        return tbl1 => tbl1.FSystemCode == (int)comboBoxSystemCode.SelectedValue;
    }

我的查询是:

    private object bindingSourceTbl1_DataSourceBinding(object sender, EventArgs e)
   {
        using (SampleDbEntities dbo = new SampleDbEntities())
        {

           return dbo.Tbl1.Join(dbo.Tbl2, x => x.Id, y => y.Tbl1Id, (x, y) => new { Tbl1 = x, Tbl2 = y }).Where(this.Expr1()).Where(a => a.Tbl2.Tbl6Id == (int)comboBoxTbl6.SelectedValue).Select(a => a.Tbl1).ToList();
        }
    }

但在运行时失败了。所以(this.Expr1())

请帮我写正确的代码。

1 个答案:

答案 0 :(得分:0)

我通过这个改变解决了我的问题,这对我有用:

private object bindingSourceTbl1_DataSourceBinding(object sender, EventArgs e)
{
    using (SampleDbEntities dbo = new SampleDbEntities())
    {

       return dbo.Tbl1.Join(dbo.Tbl2, x => x.Id, y => y.Tbl1Id, (x, y) => new { Tbl1 = x, Tbl2 = y }).Where(a => a.Tbl2.Tbl6Id == (int)comboBoxTbl6.SelectedValue).Select(a => a.Tbl1).Where(Expr1()).ToList();
    }
}

我认为这一定是真的。