【问题标题】:Operator '==' cannot be applied to operands of type 'bool' and 'string' in mvc c# [closed]运算符'=='不能应用于mvc c#中'bool'和'string'类型的操作数[关闭]
【发布时间】:2016-03-01 09:09:56
【问题描述】:

我是 MVC C# 的新手。我收到了这个错误,我已经检查并发现了类似的错误,这不会导致我的错误。

错误是-“运算符'=='不能应用于'bool'和'string'类型的操作数”

代码是 -

List<RptItem> _r2 = _r1.Where(xx => xx.Value == ("rcat"))
            .Select(xx=>(KeyValuePair<string, string>?)xx)
            .FirstOrDefault();

谁能帮帮我,我需要做什么。

谢谢

【问题讨论】:

  • xx.Value 似乎是bool 类型,因此不可能是"rcat"。检查_r1T
  • 你对_r1的定义是什么?该错误意味着 xx.Value 是一个布尔值,您正在尝试根据字符串对其进行检查。
  • _r1 正在返回一些字典值。

标签: c# model-view-controller razor


【解决方案1】:

与错误状态完全一样,您正在尝试将 bool (xx.Value) 与 string ("rcat") 进行比较,这显然是不允许的。

【讨论】:

  • 如何更改为字符串
  • true/false 转换为string 是什么意思?特别是当 string"rcat" 时?您究竟想在这里尝试什么?
  • 我正在尝试将字典值分配到列表中,_r1 返回一些字典值。
【解决方案2】:

在 c# 和几乎所有强类型语言中,您必须将正确的 types 参数传递给函数、方法和运算符。运算符 '==' 通常被重载为仅接受两个相同类型的对象,因此无法将 string 类型的对象与 bool 类型的对象进行比较时间>。

您可能对 LINQ 查询的第二部分感到困惑: .Select(xx=&gt;(KeyValuePair&lt;string, string&gt;?)xx).

仅仅因为您将xx 转换为KeyValuePair&lt;string, string&gt;? 并不意味着xx 值在另一个范围内属于该类型:(xx =&gt; xx.Value == ("rcat")。两个xx 是两个不同的变量!

如果你想让xx.Value 成为一个字符串以便你可以将它与"rcat" 进行比较,你可以选择在xx.Value 上调用函数ToString()(虽然,由于xx.Value 是一个布尔值,调用此方法只会生成等于"true""false" 的字符串。

【讨论】:

  • 你能给我举个例子吗
  • 我使用了 xx => xx.Value == ("rcat").ToString 但仍然遇到同样的错误
  • ToString() 将任何类型的对象转换为字符串,因此当您在“rcat”上调用它时,它会将字符串...转换为字符串!您的问题是 xx.Value 是 not 字符串,您需要它才能比较两者。所以,在 xx.Value 上调用 ToString!
  • 好吧,即使他这样做也行不通,因为您自己说的原因,它会将true/false"rcat"进行比较,这无济于事......跨度>
  • 有没有其他方法可以实现相同的结果,其中 _r1 会返回一些字典值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多