Оператор '==' не может применяться к операндам типа '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: Я думаю, что я просто закончил то, что он швыет, чтобы быть глупой маленькой ошибкой...
Ответы
Ответ 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);