Подтвердить что ты не робот

Оператор '==' не может применяться к операндам типа 'int' и '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));
}

Спасибо за помощь и быстрый ответ!

PS: Я думаю, что я просто закончил то, что он швыет, чтобы быть глупой маленькой ошибкой...

4b9b3361

Ответ 1

Вам нужно преобразовать selectedDepartment в integer, прежде чем сравнивать его в запросе LINQ.

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

В вашем запросе:

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

d.DepartmentId имеет тип int, тогда как selectedDepartment - это строка, и вы можете сравнить ее с помощью оператора ==.

Ответ 2

d.DepartmentId является int и selectedDepartment является строкой.

Вам нужно будет преобразовать с помощью Int32.Parse, Int32.TryParse или Convert.ToInt32

Edit:

int selectedDepartmentId = Convert.ToInt32(selectedDepartment);

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

Ответ 3

Вы выбралиОтдел имеет строку типа, а ваш id имеет тип int. Вы должны преобразовать выбранное отделение в int:

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