You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC LINQ查询报错:字符串与HolidayRequestForm无法比较求解决

解决LINQ查询中的类型不匹配错误

首先,咱们来拆解一下你遇到的错误:Operator '==' cannot be applied to operands of type 'string' and 'HolidayTracker.Models.HolidayRequestForm'。这个错误的根源非常明确——你在第二个查询里写了r.Employee.Site.SiteName == employeesSU.FirstOrDefault(),左边的SiteName是字符串类型,而employeesSU.FirstOrDefault()返回的是一个HolidayRequestForm对象,这两个类型完全不兼容,自然没法用==做比较。

你的需求分析

从代码逻辑来看,你应该是想先筛选出符合指定站点(或所有站点,如果searchSitehols为空)的假期申请记录,再对这些记录按假期月份分组,统计每个月的总休假时长。那正确的思路应该是基于第一个筛选后的结果进行分组统计,而不是重新从数据库查询并做错误的类型对比。

修正后的代码方案

这里提供两种合理的写法,你可以根据场景选择:

方案1:直接复用筛选后的查询结果(推荐)

这种方式更高效,因为它会把两个查询合并为一次数据库请求:

// 第一步:筛选符合条件的假期申请
var employeesSU = from s in db.HolidayRequestForms 
                  where string.IsNullOrEmpty(searchSitehols) || s.Employee.Site.SiteName == searchSitehols
                  select s;

// 第二步:基于筛选后的结果分组统计
var querythpmpro = from r in employeesSU
                   group r by r.MonthOfHoliday into g
                   select new { 
                       Value = g.Key, 
                       Count = g.Sum(h => h.HoursTaken) 
                   } into result
                   orderby result.Value
                   select result;

方案2:单独复用筛选条件(不推荐,会重复执行筛选逻辑)

如果你一定要在第二个查询里单独写筛选逻辑,那应该和第一个查询的条件保持一致,而不是去对比HolidayRequestForm对象:

var querythpmpro = from r in db.HolidayRequestForms 
                   where string.IsNullOrEmpty(searchSitehols) || r.Employee.Site.SiteName == searchSitehols
                   group r by r.MonthOfHoliday into g
                   select new { 
                       Value = g.Key, 
                       Count = g.Sum(h => h.HoursTaken) 
                   } into result
                   orderby result.Value
                   select result;

额外优化建议

  • 把searchSitehols == null || searchSitehols == ""替换成string.IsNullOrEmpty(searchSitehols),代码更简洁规范。
  • 如果employeesSU后续会被多次调用,可以考虑添加.ToList()把结果加载到内存;但如果只是用于本次分组统计,保持IQueryable状态让数据库端处理会更高效。

内容的提问来源于stack exchange,提问作者Conor8630

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:29:20