实体框架where子句

dan*_*arj 4 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);
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,但我怎样才能使它工作.

Ser*_*kiy 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);
Run Code Online (Sandbox Code Playgroud)

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

x.Device_ID.Equals(model.DeviceId) && x.Device_Name == model.DeviceName
Run Code Online (Sandbox Code Playgroud)

推荐阅读:Lambda表达式(C#编程指南).另请注意==比较运算符.=是一个赋值运算符.不要与它们混淆.