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

ASP.NET MVC:无法隐式转换string到int——ViewModel三元运算符问题

解决LINQ查询中ViewModel三元运算符赋值的问题

我来帮你搞定这个问题!先看你代码里的几个关键错误,咱们一步步修正:

1. 先修正基础语法错误

你原来的LINQ查询在对象初始化时写错了语法——多了一个多余的右括号,而且属性赋值用了分号(对象初始化器里多个属性用逗号分隔,单个属性则不需要分隔符)。

2. int类型直接比较即可

你的p.RegionId是int类型,直接和1(int字面量)比较完全没问题,不需要转成字符串或者额外的类型转换——之前的那些转换尝试反而画蛇添足,甚至可能因为LINQ to Entities不支持某些本地方法导致报错。

正确的代码示例

// 如果你要获取单个ViewModel对象,记得加FirstOrDefault/SingleOrDefault
var model = (from p in _context.ProductGun 
             where p.ProductId == productId 
             select new GunViewModel 
             { 
                 RegionId = p.RegionId == 1 ? "DEV" : "TEST" 
             }).FirstOrDefault();

额外注意点

  • 确认你的GunViewModel里的RegionId属性是string类型,因为你赋值的是"DEV"/"TEST"字符串;如果ViewModel的RegionId是int类型,那这个赋值肯定会报错,这时候要调整ViewModel属性类型或者三元运算符的返回值(比如改成对应int值)。
  • 原查询返回的是IQueryable<GunViewModel>集合,如果你的productId对应单个产品,一定要加上FirstOrDefault()/SingleOrDefault()来获取单个对象,否则model会是集合类型,不符合预期。

内容的提问来源于stack exchange,提问作者Big. D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:11:30