2016-03-01 48 views
-2

我是MVC C#中的新成员。我收到这个错误,我检查并发现了类似的错误。运算符'=='不能应用于mvc类型'bool'和'string'的操作数c#

的错误是 - “操作员‘==’不能应用于类型‘布尔’和‘串’的操作数”

准则是 -

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

有人能帮助我, 我需要做什么。

感谢

+1

'xx.Value'似乎是'bool'类型,因此不可能是''rcat''。检查_r1''T' – Ian

+0

_r1的定义是什么?该错误意味着xx.Value是一个布尔值,并且您正在尝试使用字符串来检查它。 – Pheonyx

+0

_r1正在回退一些字典值。 – ronibd

回答

2

酷似错误状态,你正试图以比较boolxx.Value)与string"rcat")这是不允许的原因显而易见。

+0

如何更改为字符串 – ronibd

+0

将true/false转换为'string'会有什么意义?特别是当'string'是'“rcat”'?你究竟想在这里尝试什么? – Idos

+0

我想分配一个字典值到列表中,_r1返回一些字典值。 – ronibd

1

在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")。

+0

请给我举个例子 – ronibd

+0

一个什么样的例子? – Glubus

+0

我使用了xx => xx.Value ==(“rcat”)。ToString但仍然出现相同的错误 – ronibd

相关问题