【问题标题】:LINQ intellisense stopped workingLINQ 智能感知停止工作
【发布时间】:2010-02-13 14:59:34
【问题描述】:

我的 Intellisense 怎么了??

当我输入这样的一行时......

Dim users = (From u In Membership.GetAllUsers Select u.UserName)

...当我到达 Select u. 部分时,我(几乎)没有得到 Intellisense。仅显示 Equals、GetHashCode、GetType、ReferenceEquals 和 ToString。不是“用户名”和 MembershipUser 类的其他相关属性。
代码可以编译并且运行良好。

有什么建议吗?

我按照this question 中的建议在 VS 命令提示符下尝试了devenv.exe /ResetSettings,但没有帮助。

【问题讨论】:

  • 如果有帮助,我的 c# intellisense 一直对此很古怪,但我不确定这是否是由于 ReSharper 干扰...
  • 不,在我的情况下不是:未安装 Resharper...

标签: asp.net vb.net visual-studio-2008 linq intellisense


【解决方案1】:

之所以会这样,是因为MemberShip.GetAllUsers的返回类型是MembershipUserCollection。这个集合类型只实现了IEnumerable,不是强类型。编译器只能推断集合中元素的类型是Object。因此,您会在 select 子句中获得 Object 的智能感知。

您需要告诉编译器有关元素类型的更多信息。例如,如果您知道所有值都是 MembershipUser 实例,则可以使用 Cast 函数告诉编译器

From u in Membership.GetAllUsers().Cast(Of MembershipUser) ...

【讨论】:

  • from MembershipUser u in Membership.GetAllUsers()... 也应该可以工作,而且看起来比 .Cast 语法更简洁。
【解决方案2】:

JaredPar 告诉你的是真的,因为那个集合不是 IEnumerable 所以你必须告诉编译器你的集合中的对象类型

如果这仍然不起作用,请确保您在类的顶部导入了 linq 命名空间 Import System.Linq :)

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 2012-04-05
    • 2011-10-26
    • 2012-08-19
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多