How to select a single object using Linq in vb.net

Posted by Hucker on Stack Overflow See other posts from Stack Overflow or by Hucker
Published on 2011-03-18T22:54:29Z Indexed on 2011/03/19 0:10 UTC
Read the original article Hit count: 161

Filed under:
|
|
|

I have done a lot of searching to what appears to be a simple LINQ problem but I can't figure out how to do grab an object out of a collection that has a specified minimum (or max value) without resorting to a sort like this:

> dim customers= GetCustomers()
> 
> dim youngest = (From c in customers
>                  Order By c.age Ascending).ToList.First

This (untested code) structure works fine with the exception that the entire customer array must be sorted and placed into a list for the only purpose of extracting the first value. That can't be the best way to get the minimum!

Note that I want the whole c record in this case, not the minumum age of a customer that can be done like this (a typical example):

> dim customers= GetCustomers()
> 
> dim youngest = (From c in customers
>                  Select c.age).Min

Or even

> dim customers= GetCustomers()
> 
> dim youngest = (From c in customers
>                  Select c).Min(Function(x) x.age)

I can't for the life of me figure out how to get the whole object (or even the index) without resorting to the sort...

© Stack Overflow or respective owner

Related posts about vb.net

Related posts about LINQ