【问题标题】:Cannot implicitly convert type string to int asp.net mvc无法将类型字符串隐式转换为 int asp.net mvc
【发布时间】:2018-04-23 21:23:46
【问题描述】:

所以我试图在视图模型中使用三元运算符。注意:RegionId 是 int。这是代码

 var model = (from p in _context.ProductGun
              where p.ProductId == productId
              select new GunViewModel)
              {
                  RegionId = p.RegionId == 1 ? "DEV" : "TEST"; //error
              }

我试过了: RegionId = p.RegionId.ToString() == "1" ....; RegionId = p.RegionId == Convert.ToInt32(1); 反之亦然解决方案。但没有什么是正确的。抱歉打错了。我用手机输入这个

【问题讨论】:

  • 您无法将“DEV”转换为int...
  • 如果RegionId 是一个int,为什么你认为它可以分配为“DEV”? "DEV" 是一个字符串,不是 int
  • 是否应该来自 _context.ProductGun 中的 p,其中 p.ProductId == productId select new GunViewModel { RegionId = p.RegionId == 1 ? “开发”:“测试”; //error } ) 放错地方了?

标签: c# ternary-operator


【解决方案1】:

错误告诉您 RegionId 是一个 Int 并且您试图在区域 id 为 1 时为其分配“DEV”。那是行不通的。尝试在其中输入一个零并检查您正在寻找“DEV”的任何地方

RegionId = p.RegionId == 1 ? 0 : p.RegionId;

【讨论】:

    【解决方案2】:

    这就是答案:

    我将 Viewmodel 中 RegionId 的数据类型更改为 String。由于是int转int,所以不能隐式转换类型。

    RegionId = p.RegionId == 1 ? "DEV" : "TEST"; Where: RegionId = string p.RegionId = int

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多