运营商&= 39; =='不能应用于操作数'方法组'或者'字符串'

时间:2016-08-29 09:55:16

标签: c# asp.net asp.net-mvc linq

我有以下代码:

  <span>@Model.LicenseHolder.LegalPerson.ContactDetails.Select(x => x.Name == "Fish")</span>

当我运行时,我收到错误:

  

运营商&#39; ==&#39;不能应用于操作数&#39;方法组&#39;或&#39;字符串&#39;

我不明白为什么我会这样做。

在这里您可以看到ContactDetails的图片: &#39; enter image description here

我想访问ContactDataType属性并比较Is Inside ContactDataType的Name-property,但我不知道它是怎么做的。所以基本上,我想要这个:@Model.LicenseHolder.LegalPerson.ContactDetails.ContactDataType.Select(x => x.Name == "PrimaryPhone")

3 个答案:

答案 0 :(得分:7)

您需要将其应用于Where而不是Select功能:

<span>@Model.LicenseHolder.LegalPerson.ContactDetails.Where(x => x.Name == "Fish").FirstOrDefault()</span>

甚至更好:

<span>@Model.LicenseHolder.LegalPerson.ContactDetails.FirstOrDefault(x => x.Name == "Fish")</span>

答案 1 :(得分:2)

问题是,您尝试访问可能是方法而非属性的Name成员。
在屏幕截图中,我们可以看到所有可用的属性:ContactDataTypeDebuggerDisplayDetailIdPersonId。没有Name。如果是属性,则必须将()添加到Name才能执行:

@Model.LicenseHolder.LegalPerson.ContactDetails.Select(x => x.Name() == "Fish")

这将返回IEnumerable<Boolean>,但您可能还需要其他内容 也许这个?

@Model.LicenseHolder.LegalPerson.ContactDetails
      .FirstOrDefault(x => x.Name() == "Fish")
      .ContactDataType 

这将返回ContactDetail ContactDataType Name() "Fish"等于glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0)

答案 2 :(得分:0)

Select Api保留用于选择属性,在您的情况下,您希望按属性的值进行过滤,因此请使用Where: <span>@Model.LicenseHolder.LegalPerson.ContactDetails.Where(x => x.Name == "Fish").FirstOrDefault().Select(x => x.Name)</span>