Tuesday, September 22, 2009

How to find an element in c# Generic List

The following sample code demonstrates you how to find a matching element in the object list.

Let's say we have an object called Person with public properties PersonID, Name, Age, Gender as defined below.

using System.Collections.Generic.List;

public class Person
{
public int PersonID {get; set;}
public string Name {get; set;}
public int Age {get; set;}
public bool Gender {get; set;}
}

class program
{
public static void Main(string[] args)
{
// Let's say we have a method defined as dbAccess.GetPersons() to
//return all the records from Person table and populates the
//list object "persons" as shown below.
List persons = dbAccess.GetPersons();

int personIDToFind = 1234;
//Find person in persons list by PersonID using predicate
//"p=>p.PersonID == personIDToFind"
Person personByFindOperation = persons.Find( p=>p.PersonID == personIDToFind );

string personName = "Kiran"
//Find person in persons list by Name using predicate
//"p=>p.Name == personName"
Person personByFindOperation2 = persons.Find( p=>p.Name == personName );

}
}

Note: The Find method of List returns the first occurrence of the exact match within the entire System.Collections.Generic.List.


kick it on DotNetKicks.com
Shout it

3 comments:

Yngve B. Nilsen said...

I would also mention the .SingleOrDefault(p => p.Name == personName)

:)

Kiran said...

Hi Kiran,

How would you select the youngest or oldest person from the list?

Kiran said...

var maxAge = persons.Max(l => l.Age);

Person oldestPerson = (from p in persons
where p.Age == maxAge
select p).FirstOrDefault;

var minAge = persons.Min(l => l.Age);

Person youngestPerson = (from p in persons
where p.Age == minAge
select p).FirstOrDefault;