操作符& # 39;= = & # 39;不能应用于'int'类型的操作数和& # 39;字符串# 39
本文关键字:操作数 字符串 应用于 不能 操作符 int 类型 | 更新日期: 2023-09-27 18:03:45
我这里有一点误解,为什么我这里有一个错误,我需要解析它什么是错误的这段代码?
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:我想我刚刚结束的事情,它似乎只是一个愚蠢的小错误…
您需要在LINQ查询中比较selectedDepartment
之前将其转换为整数。
int selectedDepartment = Convert.ToInt32(rcbDepartment.SelectedValue);
在你的查询中:
ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId == selectedDepartment);
d.DepartmentId
是int类型,而selectedDepartment
是字符串,您可以使用==
操作符比较两者。
您所选择的department类型为string,而您的id类型为int。您应该将selectedDepartment转换为int:
int selectedDepartment = Convert.ToInt32(rcbDepartment.SelectedValue);
d.DepartmentId
为int
, selectedDepartment
为字符串。
您需要使用Int32.Parse
, Int32.TryParse
或Convert.ToInt32
进行转换
int selectedDepartmentId = Convert.ToInt32(selectedDepartment);
HtDepartment department = ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId == selectedDepartmentId));