2013-03-14 10 views
11

Mam małe nieporozumienie tutaj, dlaczego mam tutaj błąd, muszę parsować to, co jest nie tak z tym kodem?Operator '==' nie może być zastosowany do operandów typu 'int' i '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)); 
} 

Dzięki za pomoc i szybką odpowiedź!

PS: I co ja mam właśnie nad rzeczą, że szwy po prostu się trochę głupi błąd ...

+5

Błąd tutaj jest całkiem jasny. Jednym z 'd.DepartmentId' i' selectedDepartment' jest 'int', a drugi' string', i nie możesz porównać dwóch z '=='. –

+0

chcesz, aby ludzie firmy Microsoft uwzględnili zmienną powodującą błąd. ? to jest dość pouczające. możesz dostać problematyczny kod, przeglądając go. –

+0

Podaj więcej informacji: co próbujesz zrobić? jak się masz? czego oczekiwano? I jaki był wynik, który różni się od oczekiwań? bez takich informacji. nikt nie może ci pomóc. –

Odpowiedz

11

trzeba konwertować selectedDepartment do liczby całkowitej przed porównaniem go w kwerendzie LINQ.

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

w zapytaniu:

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

d.DepartmentId jest typu int natomiast selectedDepartment jest ciągiem znaków i można porównać oba użyciu == operatora.

+0

Łańcuch wejściowy nie był w poprawnym formacie. czy możesz edytować odpowiedź? –

+0

@MCraft, ustaw punkt przełomowy na linii i zobacz, co dostajesz wewnątrz 'rcbDepartment.SelectedValue', musi to być coś innego niż wartość całkowita – Habib

+0

Uzyskaj wartość aktualnie wybranego elementu w combobox –

0

d.DepartmentId to int i selectedDepartment jest ciągiem.

Musisz przekonwertować za pomocą Int32.Parse, Int32.TryParse lub Convert.ToInt32

Edit:

int selectedDepartmentId = Convert.ToInt32(selectedDepartment); 

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

Mam nadal problem tutaj LINQ do Entities nie rozpoznaje metody "Int32 Parse (System.String)" metoda, a ta metoda nie może być przetłumaczona na wyrażenie sklepu. –

+0

@MCraft - zaktualizowałem moją odpowiedź. Spróbuj tego. –

+0

Łańcuch wejściowy nie był w poprawnym formacie –

0

Ty selectedDepartment jest typu ciąg, a identyfikator jest typu int. Powinieneś przekonwertować wybrany Departament na int:

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

Łańcuch wejściowy nie był w poprawnym formacie –

+0

Następnie należy ustawić wartości parametru rcbDepartment.SelectedValue na klucze departamentów. Eight ręcznie lub przez databinding do właściwego klucza. – Peter

+0

Nie możesz edytować pytania =? ¨ –

Powiązane problemy