2013-03-14 12 views
11

Ho un po 'di incomprensione qui perché ho qui un errore devo analizzare ciò che non va con questo codice?L'operatore '==' non può essere applicato agli operandi di tipo 'int' e 'string'

UberTrackerEntities ctx = UberFactory.Context; 
IEnumerable<HtUser> users = HtUser.GetAll(); 
string selectedBU = rcbBusinessUnits.SelectedValue; 
string selectedDepartment = rcbDepartment.SelectedValue; 

HtDepartment department = ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId ==selectedDepartment); 

if (department != null) 
{ 
    users = users.Where(u => u.HtDepartments.Contains(department)); 
} 

Grazie per l'aiuto e risposta veloce!

PS: cosa di cui sono poco più di cosa si cuce solo per essere un piccolo errore stupido ...

+5

L'errore qui è abbastanza chiaro. Uno di 'd.DepartmentId' e' selectedDepartment' è un 'int', l'altro a' string', e non è possibile confrontare i due con '=='. –

+0

si desidera che le persone Microsoft includano quale variabile che causa l'errore. ? è piuttosto informativo puoi ottenere il codice problematico guardandolo. –

+0

Fornisci maggiori dettagli: cosa stai cercando di fare? come stai? cosa ci si aspettava? E quale è stata l'uscita diversa dalle tue aspettative? senza tali informazioni. nessuno può aiutarti. –

risposta

11

è necessario convertire selectedDepartment a intero prima di confrontandola nella query LINQ.

int selectedDepartment = Convert.ToInt32(rcbDepartment.SelectedValue); 

Nella tua query:

ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId == selectedDepartment); 

d.DepartmentId è di tipo int, mentre selectedDepartment è una stringa e si può confrontare entrambi utilizzando == operatore.

+0

La stringa di input non era in un formato corretto. puoi per favore modificare la tua risposta? –

+0

@MCraft, metti un punto di interruzione sulla linea e vedi cosa ottieni dentro 'rcbDepartment.SelectedValue', deve essere qualcosa di diverso dal valore intero – Habib

+0

Ottieni il valore dell'oggetto attualmente selezionato nella casella combinata –

0

d.DepartmentId è un int e selectedDepartment è una stringa.

Sarà necessario convertire usando Int32.Parse, Int32.TryParse o Convert.ToInt32

Edit:

int selectedDepartmentId = Convert.ToInt32(selectedDepartment); 

HtDepartment department = ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId == selectedDepartmentId)); 
+1

Ho ancora un problema qui LINQ to Entities non riconosce il metodo 'Int32 Parse (System.String)' metodo, e questo metodo non può essere tradotto in un'espressione di archivio. –

+0

@MCraft - Aggiornata la mia risposta. Prova questo. –

+0

La stringa di input non era in un formato corretto –

0

È selectedDepartment è di tipo stringa, e il vostro id è di tipo int. Dovresti convertire l'appartamento selezionato in int:

int selectedDepartment = Convert.ToInt32(rcbDepartment.SelectedValue); 
+0

La stringa di input non era in un formato corretto –

+0

Quindi è necessario impostare i valori di rcbDepartment.SelectedValue sulle chiavi dei reparti. Eighter a mano o collegando i dati alla chiave corretta. – Peter

+0

non è possibile modificare la domanda =? ¨ –

Problemi correlati