如何在vb.net中使用Linq选择单个对象

Huc*_*ker 2 linq vb.net lambda minimum

我已经做了很多搜索似乎是一个简单的LINQ问题,但我无法弄清楚如何从具有指定最小值(或最大值)的集合中抓取一个对象而不采用这样的排序:

dim customers= GetCustomers()

dim youngest = (From c in customers
                 Order By c.age Ascending).ToList.First
Run Code Online (Sandbox Code Playgroud)

此(未经测试的代码)结构可正常工作,但必须对整个客户数组进行排序并将其放入列表中,以便仅提取第一个值.这不是获得最低限度的最佳方式!

请注意,在这种情况下我想要整个c记录,而不是像这样可以完成的客户的最小年龄(典型示例):

dim customers= GetCustomers()

dim youngest = (From c in customers
                 Select c.age).Min
Run Code Online (Sandbox Code Playgroud)

甚至

dim customers= GetCustomers()

dim youngest = (From c in customers
                 Select c).Min(Function(x) x.age)
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活弄清楚如何获得整个对象(甚至索引)而不诉诸于排序......

San*_*ath 5

同样,C#代码,我不确定我是否在VB.NET中正确使用它

C#

  Customer youngest = customers.Aggregate((c1, c2) => (c1.age < c2.age) ? c1 : c2);
Run Code Online (Sandbox Code Playgroud)

VB.NET

  dim youngest = customers.Aggregate( Function(ByVal c1, ByVal c2) IF( (c1.age < c2.age) , c1 , c2  ) );
Run Code Online (Sandbox Code Playgroud)