我的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
,但它没有帮助。
答案 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
:)