在VB.Net中查找元组列表中的最小值

在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)) 基本

我正在尝试从元组列表中查找最低的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))
基本上,在这种情况下,我希望找到最小的数字和返回字符串(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