2011-01-19 4 views
0

나는 다음과 같은 경우는 (VB.NET, .NET 4) 한 :ToLookup, LINQ 및 색인

는 사용자의

일반의 목록에있는 항목과 해당 인덱스를 포함한 컬렉션을 필요 letters(Of Letter)

A, B, C, B, D

객체 :

A (0) 
B (1, 3) 
C (2) 
D (4) 

일부 시도 :

Dim letters As New List(Of Letter) 
Dim query As ??? = letters.Select(Function(letter, index) _ 
          New With {index, letter}) 

Dim lookup As Lookup(Of Letter, Integer) 
lookup = letters (query).ToLookup(??? 

답변

1

우선 인덱스를 지원하는 Select의 오버로드를 사용하여 문자와 인덱스의 튜플 (또는 KeyValuePair)을 만듭니다. 그런 다음 키와 값 모두에 대한 선택자를 사용하는 ToLookUp의 오버로드를 사용하십시오.

당신은 IEqualityComparer<Letter>ToLookUp에 공급, 또는 모두Letter.EqualsLetter.GetHashCode()를 오버라이드 (override) 중 하나를해야 할 수도 있습니다. 이 두 가지를 함께 재정의해야 일관성을 유지하거나 잘못된 결과를 얻게됩니다.

0
Dim lookup = Enumerable.Range(0, letters.Count).ToLookup(Function(i) letters(i))