2011-01-19 7 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のオーバーロードを使用します。

あなたはToLookUpIEqualityComparer<Letter>を供給し、またはその両方Letter.EqualsLetter.GetHashCode()を上書きするか必要になる場合があります。これらの2つを一緒にオーバーライドして一貫性を持たせるか、間違った結果を得る必要があります。

0
Dim lookup = Enumerable.Range(0, letters.Count).ToLookup(Function(i) letters(i)) 
関連する問題