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()
,这样读起来更清晰。另外,不要忘记处理您的上下文,最好使用块将其包装在中。