LINQ intellisense停止工作

时间:2010-02-13 14:59:34

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

我的Intellisense发生了什么?

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

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

......当我到达Select u.部分时,我(几乎)没有智能感知。仅出现Equals,GetHashCode,GetType,ReferenceEquals和ToString。不是“UserName”和MembershipUser类的其他相关属性 代码编译并正常工作。

有什么建议吗?

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

2 个答案:

答案 0 :(得分:2)

之所以发生这种情况,是因为MemberShip.GetAllUsers的返回类型为MembershipUserCollection。此集合类型仅实现IEnumerable,并且不是强类型。编译器只能推断集合中元素的类型为Object。因此,您可以在select子句中获得Object的智能感知。

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

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

答案 1 :(得分:0)

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

如果仍然无法正常工作,请确保在类的顶部导入了linq命名空间 Import System.Linq :)