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

Linq查询返回匿名类型无法转换为SCADA_DATA_Truncated类列表报错

问题根因

你遇到的类型转换报错由两个问题共同导致:

  1. select new { ... }语法生成的是匿名类型实例,和你自定义的SCADA_DATA_Truncated类没有任何兼容转换关系,无法直接互转
  2. 你尝试将整个List<匿名类型>强制转换为单个SCADA_DATA_Truncated对象的写法本身存在语法错误
修复方案

只需要在select子句中直接实例化你自定义的SCADA_DATA_Truncated类即可,EF可以正常解析这种属性初始化的写法,DbFunctions.TruncateTime的返回值也刚好匹配你类中COLDATE字段的Nullable<DateTime>类型:

List<SCADA_DATA_Truncated> dataResults = (from b in a2Entity.SCADA_DATA
                                           where DbFunctions.TruncateTime(b.COLDATE) >= dateCheck1 
                                           && DbFunctions.TruncateTime(b.COLDATE) <= dateCheck2
                                           && whereInAcode.Contains(b.acode) 
                                           && whereInLoc.Contains(b.LOCCODE)
                                           select new SCADA_DATA_Truncated // 这里改为实例化你的自定义类
                                           {
                                               COLDATE = DbFunctions.TruncateTime(b.COLDATE),
                                               acode = b.acode,
                                               LOCCODE = b.LOCCODE,
                                               RESULT = b.RESULT,
                                               analyte = b.analyte
                                           }
                                       ).ToList();
可选优化建议

你可以对查询条件做小优化,避免重复调用DbFunctions.TruncateTime:

List<SCADA_DATA_Truncated> dataResults = (from b in a2Entity.SCADA_DATA
                                           let truncDate = DbFunctions.TruncateTime(b.COLDATE)
                                           where truncDate >= dateCheck1 
                                           && truncDate <= dateCheck2
                                           && whereInAcode.Contains(b.acode) 
                                           && whereInLoc.Contains(b.LOCCODE)
                                           select new SCADA_DATA_Truncated
                                           {
                                               COLDATE = truncDate,
                                               acode = b.acode,
                                               LOCCODE = b.LOCCODE,
                                               RESULT = b.RESULT,
                                               analyte = b.analyte
                                           }
                                       ).ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:24:03