2013-07-01 32 views
5

ottengo questo errore quando provo questo codice:LINQ to Entities non riconosce il metodo di 'Int32 ToInt32 (System.String)' metodo, e questo metodo non può essere tradotto in un negozio di espressione

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"); 
} 
+0

parentesi uso e analizzare/TryParse – Sayse

+0

una nota a parte, se il vostro db non è si può lasciare fuori tra maiuscole e minuscole il ' .ToLower() 'che lo rende più pulito da leggere. Inoltre, non dimenticare di "eliminare" il contesto che è meglio fare racchiuso all'interno di un blocco "using". – Silvermind

risposta

7

Dal LINQ to Entities non supporta Convert.ToInt32, è necessario analizzare a int fuori LINQ prima:

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);