LINQ intellisense перестал работать - PullRequest
2 голосов
/ 13 февраля 2010

Что случилось с моим Intellisense ??

Когда я печатаю строку, подобную этой ...

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

... Я почти (почти) не получаю Intellisense, когда добираюсь до части Select u..Отображаются только Equals, GetHashCode, GetType, ReferenceEquals и ToString.Не "UserName", а другие соответствующие свойства класса MembershipUser.
Код компилируется и работает просто отлично.

Есть предложения?

Я пытался devenv.exe /ResetSettings из командной строки VSкак предложено в этом вопросе , но это не помогло.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2010

Причина, по которой это происходит, заключается в том, что тип возвращаемого значения MemberShip.GetAllUsers равен MembershipUserCollection. Этот тип коллекции реализует только IEnumerable и не является строго типом. Компилятор может только определить тип элементов в коллекции: Object. Следовательно, вы получаете intellisense для Object в предложении select.

Вам нужно сообщить компилятору больше информации о типе элементов. Например, если вы знаете, что все значения являются MembershipUser экземплярами, вы можете использовать функцию Cast, чтобы сообщить компилятору

From u in Membership.GetAllUsers().Cast(Of MembershipUser) ...
0 голосов
/ 15 февраля 2010

То, что сказал вам JaredPar, верно, потому что эта коллекция не IEnumerable, поэтому вы должны сообщить компилятору, какой тип объекта внутри вашей коллекции

И если это все еще не работает, убедитесь, что вы импортировали пространство имен linq в верхней части класса. Import System.Linq :)

...