【发布时间】:2009-10-27 03:45:13
【问题描述】:
给定以下 vb.net 类:
Friend Class PairCollection(Of TKey, TValue)
Inherits List(Of KeyValuePair(Of TKey, TValue))
Public Overloads Sub Add(ByVal key As TKey, ByVal value As TValue)
Me.Add(New KeyValuePair(Of TKey, TValue)(key, value))
End Sub
Public Function FindByValue(ByVal value As TValue) As List(Of KeyValuePair(Of TKey, TValue))
Return Me.FindAll(Function(item As KeyValuePair(Of TKey, TValue)) (item.Value.Equals(value)))
End Function
End Class
函数 FindByValue 返回一个适合某个值的 KeyValuePair。但是,此 PairCollection 的实现可能具有 m:1 键值,因此我希望返回具有该值的所有键(和唯一键)(可能不止一个)。
我是 vb.net 中的 Lambda 表达式的新手,并且更熟悉 C#,这并没有让问题变得更容易。我可以编写一个简单的例程来迭代集合,但我觉得有一种 lambda 和泛型结合的方法。
我认为我正在尝试做的事情大致如下:
Public Function FindByValue2(ByVal value As TValue) As List(Of TKey)
Return Me.FindAll(Function(item As list(of TKey) (item.Value.Equals(value)))
End Function
我正在尝试的相关推理是here。
【问题讨论】: