2010-02-13 5 views
2

내 Intellisense에 무슨 일이 일어 났습니까 ??LINQ intellisense가 작동을 멈췄습니다

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

나는이 같은 줄을 입력

... 나는 Select u. 부분에 도착하면 내가 (거의)에는 인텔리을 얻을 수 없습니다. 같음, GetHashCode, GetType, ReferenceEquals 및 ToString 만 나타납니다. "UserName"이 아닌 MembershipUser 클래스의 다른 관련 속성.
코드가 컴파일되고 올바르게 작동합니다.

제안 사항?

나는 this question에서 제안한대로 VS 명령 프롬프트에서 을 시도했지만 도움이되지 않았습니다.

+0

의 상단에 LINQ 네임 스페이스를 가져 있는지 확인 작동하지 않는, 그러나 그것이 R 때문인지 확실하지 않습니다. eSharper 방해 또는 아닙니다 ... –

+0

아니, 제 경우 : Resharper가 설치되어 있지 않습니다 ... –

답변

2

반환 유형이 MemberShip.GetAllUsers 인 이유는 MembershipUserCollection입니다. 이 컬렉션 유형은 IEnumerable 만 구현하며 강력한 형식이 아닙니다. 컴파일러는 컬렉션에있는 요소 유형을 추론 할 수만 있습니다 (Object). 따라서 select 절에서 Object에 대해 인텔리 센스를 얻습니다.

요소 유형에 대한 자세한 정보는 컴파일러에 알려줘야합니다. 예를 들어 당신은 모든 값은 JaredPar 그 컬렉션 IEnumerable하지 않기 때문에 당신이 참 말한

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

MembershipUser Membership.GetAllUsers()에서 ... 또한 작동해야하며 .Cast 구문보다 깨끗합니다. –

0

그래서 당신은 컴파일러에게이 컴파일러에게 알려 캐스트 기능을 사용할 수 MembershipUser 인스턴스를 안다면하는 컬렉션

내부 그리고 만약 개체 유형이 여전히 클래스는, 내 C# 인텔리 항상이에 엉뚱한되었습니다 도움이된다면 Import System.Linq :

관련 문제