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 Linqvar linqFiltered = from item in listwhere item.StartsWith("S")
select item;
Using the Where extension method:
// Linq with the Whete extension method onlyvar linqListFiltered2 = Enumerable.Where(list, i => i.StartsWith("S"));And for me the most readable:
// Linq using the Where extension method on the listvar 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.
Comments