Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 托卢库普、林克和索引_.net_Vb.net_Collections - Fatal编程技术网

.net 托卢库普、林克和索引

.net 托卢库普、林克和索引,.net,vb.net,collections,.net,Vb.net,Collections,我有以下情况(VB.NET、.NET 4): 自定义对象的通用列表字母(共字母) 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}) D

我有以下情况(VB.NET、.NET 4):

自定义对象的通用列表
字母(共字母)

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(???
首先使用支持索引的重载创建字母和索引的元组(或
KeyValuePair
)。然后使用为键和值使用选择器的重载

您可能需要向
ToLookUp
提供
IEqualityComparer
,或者重写
Letter.Equals
Letter.GetHashCode()
。这两个需要一起重写,以便它们是一致的,否则会得到错误的结果

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