C# LINQ to实体无法识别方法';Int32到Int32(System.String)和#x27;方法,而此方法无法转换为存储表达式

C# LINQ to实体无法识别方法';Int32到Int32(System.String)和#x27;方法,而此方法无法转换为存储表达式,c#,sql,linq,entities,C#,Sql,Linq,Entities,我在尝试此代码时遇到此错误: TaxiEntities db = new TaxiEntities(); bool IsUserPassCorrected = db.tblOperators.Any(item => item.UserName.ToLower() == txtUserName.Text.ToLower() && item.Password == Convert.ToInt32(txtPassWord.Text)); if (!IsUserPassCorre

我在尝试此代码时遇到此错误:

TaxiEntities db = new TaxiEntities();
bool IsUserPassCorrected = db.tblOperators.Any(item => item.UserName.ToLower() == txtUserName.Text.ToLower() &&
item.Password == Convert.ToInt32(txtPassWord.Text));

if (!IsUserPassCorrected)
{
    MessageBox.Show("Username or Password is incorrected! Please try again");
}

由于LINQ to Entities不支持
Convert.ToInt32
,因此需要首先在LINQ外部解析到
int

TaxiEntities db = new TaxiEntities();
int password = int.Parse(txtPassWord.Text);

bool IsUserPassCorrected = db.tblOperators
            .Any(item => item.UserName.ToLower() == txtUserName.Text.ToLower() 
                      && item.Password == password);

使用括号和parse/tryparseOn作为旁注,如果数据库不区分大小写,则可以省去
.ToLower()
,这样读起来更清晰。另外,不要忘记
处理
您的上下文,最好使用
块将其包装在
中。