Selecting a subset of elements in LINQ C# with the Take operator
May 28, 2014 Leave a comment
The Take extension method in LINQ returns a specified number of elements from a sequence. Its usage is very simple. Consider the following data collection:
string[] bands = { "ACDC", "Queen", "Aerosmith", "Iron Maiden", "Megadeth", "Metallica", "Cream", "Oasis", "Abba", "Blur", "Chic", "Eurythmics", "Genesis", "INXS", "Midnight Oil", "Kent", "Madness", "Manic Street Preachers" , "Noir Desir", "The Offspring", "Pink Floyd", "Rammstein", "Red Hot Chili Peppers", "Tears for Fears" , "Deep Purple", "KISS"};
The following query returns the first 10 elements from the collection:
IEnumerable<String> topItems = bands.Take(10); foreach (string item in topItems) { Console.WriteLine(item); }
…whicl will print the array items 0-9.
You’re free to combine the Take operator with other operators, such as Select. Example:
var anonymous = bands.Take(10).Select(b => new { Name = b, Length = b.Length }); foreach (var anon in anonymous) { Console.WriteLine("Band name: {0}, length: {1}", anon.Name, anon.Length); }
The query takes the top 10 items and runs the Select operator only on those 10 items, not the entire collection. Here’s the output:
You can view all LINQ-related posts on this blog here.