2010-02-13 71 views
2

什麼發生在我的Intellisense上?LINQ intellisense停止工作

當我鍵入這樣一行...

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

...我得到(幾乎)沒有智能感知,當我到了Select u.部分。只出現Equals,GetHashCode,GetType,ReferenceEquals和ToString。不是「UserName」和MembershipUser類的其他相關屬性。代碼編譯和工作得很好。

有什麼建議嗎?

我試過devenv.exe /ResetSettings從VS命令提示符this question建議,但它沒有幫助。

+0

如果有幫助,我的C#智能感知向來對這種古怪的頂部,但我不確定它是否歸因於R eSharper干擾與否... – 2010-02-13 15:00:38

+0

不,不是在我的情況:resharper未安裝... Membership14.0的 – 2010-02-13 15:04:17

回答

2

發生這種情況的原因是因爲返回類型MemberShip.GetAllUsersMembershipUserCollection。此集合類型僅實現IEnumerable,且不是強類型。編譯器只能推斷集合中元素的類型爲Object。因此,您在select子句中獲得Object的智能感知。

您需要告訴編譯器關於元素類型的更多信息。例如,如果你知道所有的值都MembershipUser情況下,您可以使用Cast功能告訴編譯器

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

u在Membership.GetAllUsers()...應該也可以工作,並且看起來比.Cast語法更清晰。 – 2010-02-14 02:06:06

0

什麼JaredPar告訴你是真的,因爲集合不是IEnumerable,所以你必須告訴編譯器,您的收藏

內,如果對象類型仍無法正常工作確保您導入的LINQ命名空間中的類 Import System.Linq :)