Using Linq to Filter a list

So yesterday I made this post on applying a filter or map on a list.  Now let’s have a look at how we can do this with Linq.

First the list:

List<string> list = new List<string>();


list.Add("Anne");


list.Add("Brian");


list.Add("Pieter");


list.Add("Wayne");


list.Add("Shane");


list.Add("Susan");


list.Add("Xavier");










Plain old Linq:





// Plain old Linq


var linqFiltered = from item in list


                            where item.StartsWith("S")


                            select item;




Using the Where extension method:







// Linq with the Whete extension method only


var linqListFiltered2 = Enumerable.Where(list, i => i.StartsWith("S"));






And for me the most readable:





// Linq using the Where extension method on the list


var linqListWhereFiltered = list.Where(i => i.StartsWith("S"));






You can even create your own Where method:





static IEnumerable<T> Where<T>(IEnumerable<T> sequence, Func<T, bool> predicate)


{


    foreach (var item in sequence)


        if (predicate(item))


            yield return item;


}






And you can use it like this:





var myLinqListFiltered = Where(list, i => i.StartsWith("S"));





I see so many uses and possibilities for the Linq style code as well as extension methods.
Post a Comment