操作符& # 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:我想我刚刚结束的事情,它似乎只是一个愚蠢的小错误…

操作符& # 39;= = & # 39;不能应用于'int'类型的操作数和& # 39;字符串# 39

您需要在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.DepartmentIdint, selectedDepartment为字符串。

您需要使用Int32.Parse, Int32.TryParseConvert.ToInt32进行转换

编辑:

int selectedDepartmentId = Convert.ToInt32(selectedDepartment);
HtDepartment department = ctx.HtDepartments.SingleOrDefault(d => d.DepartmentId == selectedDepartmentId));