运算符'=='不能应用于mvc类型'bool'和'string'的操作数c#
问题描述:
我是MVC C#中的新成员。我收到这个错误,我检查并发现了类似的错误。运算符'=='不能应用于mvc类型'bool'和'string'的操作数c#
的错误是 - “操作员‘==’不能应用于类型‘布尔’和‘串’的操作数”
准则是 -
List<RptItem> _r2 = _r1.Where(xx => xx.Value == ("rcat"))
.Select(xx=>(KeyValuePair<string, string>?)xx)
.FirstOrDefault();
有人能帮助我, 我需要做什么。
感谢
答
在c#和几乎所有强类型语言中,您都必须将正确的类型参数传递给函数,方法和运算符。运算符'=='通常被重载为只接受两个相同类型的对象,因此无法将字符串类型的对象与类型为bool的对象进行比较。
您可能会对您的LINQ查询的第二部分感到困惑: .Select(xx=>(KeyValuePair<string, string>?)xx)
。
仅仅因为您将xx
设置为KeyValuePair<string, string>?
并不意味着xx
值在另一个范围中属于该类型:(xx => xx.Value == ("rcat")
。两个xx
是两个不同的变量!
如果你想xx.Value
一个字符串,这样就可以与"rcat"
进行比较,你可以选择调用该函数ToString()
上xx.Value
(虽然,因为xx.Value
是一个布尔值,调用此方法只会产生串等于"true"
或"false"
)。
'xx.Value'似乎是'bool'类型,因此不可能是''rcat''。检查_r1''T' – Ian
_r1的定义是什么?该错误意味着xx.Value是一个布尔值,并且您正在尝试使用字符串来检查它。 – Pheonyx
_r1正在回退一些字典值。 – ronibd