实体框架where子句

时间:2014-05-08 12:48:11

标签: c# entity-framework

我是EF的新手如何使用和 - 或在实体框架中的where子句

HR_ATTENDANCE_DEVICE_SHUTDOWN_TBL attendanceDeviceShutdownTbl = 
    context.HR_ATTENDANCE_DEVICE_SHUTDOWN_TBL
        .FirstOrDefault(x => x.Device_ID.Equals(model.DeviceId) &&
                             x=>x.Device_Name=model.DeviceName);

上述代码不起作用,但我怎样才能使其正常工作。

1 个答案:

答案 0 :(得分:5)

表达式lambda具有以下语法param => expression。即它就像简单的方法,有输入参数和主体。您只需定义一次参数,然后在方法体或lambda中使用它们:

HR_ATTENDANCE_DEVICE_SHUTDOWN_TBL attendanceDeviceShutdownTbl = 
    context.HR_ATTENDANCE_DEVICE_SHUTDOWN_TBL.FirstOrDefault(x => 
        x.Device_ID.Equals(model.DeviceId) && x.Device_Name == model.DeviceName);

在这种情况下,您有一个参数x,其中转到匿名函数体。 Body是一个表达式,它应该返回布尔值并且(通常)使用参数x。在你的情况下,lambda body应该是

x.Device_ID.Equals(model.DeviceId) && x.Device_Name == model.DeviceName

建议阅读:Lambda Expressions (C# Programming Guide)。另请注意,==是比较运算符。 =是一个赋值运算符。不要与它们混淆。