在VB.Net中查找元组列表中的最小值
我正在尝试从元组列表中查找最低的Item2并返回Item1,我尝试使用list.Min执行此操作,但无法正确获取它,这是我的代码在VB.Net中查找元组列表中的最小值,vb.net,list,tuples,Vb.net,List,Tuples,我正在尝试从元组列表中查找最低的Item2并返回Item1,我尝试使用list.Min执行此操作,但无法正确获取它,这是我的代码 Dim ahlist As New List(Of Tuple(Of String, Double)) ahlist.Add(Tuple.Create("test1", 1.2)) ahlist.Add(Tuple.Create("test2", 0.2)) ahlist.Add(Tuple.Create("test3", 1.8)) 基本
Dim ahlist As New List(Of Tuple(Of String, Double))
ahlist.Add(Tuple.Create("test1", 1.2))
ahlist.Add(Tuple.Create("test2", 0.2))
ahlist.Add(Tuple.Create("test3", 1.8))
基本上,在这种情况下,我希望找到最小的数字和返回字符串(test2)。ahlist.Min(x=>x.Item2)
试试这个。我将从元组列表中返回最小值。
并将其保存在任何变量中,如下所示
Dim minValue as Double=ahlist.Min(函数(x)x.Item2)
我建议为此使用不同的数据结构:
https://msdn.microsoft.com/en-us/library/ms132329(v=vs.110).aspx
添加键/值组合。列表中的第0个始终是最小键,使其成为O(1)操作而不是O(n)。在这种情况下,键将是十进制,值将是字符串。您可以将比较项的顺序颠倒为数字:
Dim ahlist As New List(Of Tuple(Of Double, String))
ahlist.Add(Tuple.Create(1.2, "test1"))
从C#语法到VB.net,再到@Aamir Nakehwa的答案,这只是一个简单的修复
Dim minValue As Double = ahlist.Min(Function(x) x.Item2)
Debug.Print(minValue.ToString)
查看
Min
扩展方法。您可以为值提供一个选择器来比较每个项。它告诉我没有声明'x'元素;(我是这么想的,但我认为Min
将返回元组,而不是Double
值,从而允许您从中获取字符串。虽然它返回Double
,但并不能解决实际问题。顺便说一句,x=>x.Item2
是C语法。VB将是函数(x)x.Item2
。谢谢jmc,它工作并返回最低的double,但是我如何才能得到第一个值?(Item1)。好的,我更新我的答案。对于第一个值,使用x.Item1我们知道double
值是唯一的吗?他希望找到一个元素…所以我会说是@jmchilney