Partition Operations
Partition operations divide input sequences into sections and return a single section.
These operations do not alter the order of elements. These operations utilize four methods: Skip, SkipWhile, Take, and TakeWhile.
The Skip method skips elements to the point of a specified sequence position. Review its syntax below:
public static IEnumerable<TSource> Skip<TSource>( this IEnumerable<TSource> source, int count )
Review an example of its use below:
int[] rankings = { 12, 23, 22, 33, 32, 31, 10 }; IEnumerable<int> lowerRanked = rankings.OrderByDescending(r => r).Skip(3); Console.WriteLine("All rankings except the top 3 follow:"); foreach (int rankings in lowerRanked) { Console.WriteLine(rankings); }
The SkipWhile method skips elements based on predicate function conditions until it encounters an element out of compliance with the condition. Review its syntax below:
public static IEnumerable<TSource> SkipWhile<TSource>( this IEnumerable<TSource> source, Func<TSource, bool> predicate )
Review an example of its use below:
int[] ranking = { 12, 23, 22, 33, 32, 31, 10 }; IEnumerable<int> lowerRanked = ranking .OrderByDescending(ranking => ranking) .SkipWhile(ranking => ranking => 20); Console.WriteLine("All rankings below 20:"); foreach (int ranking in lowerRanked) { Console.WriteLine(ranking); }
The Take method takes elements to the point of a specified sequence position. Review its syntax below:
public static IEnumerable<TSource> Take<TSource>( this IEnumerable<TSource> source, int count )
Review an example of its use below:
int[] rankings = {12, 23, 22, 33, 32, 31, 10}; IEnumerable<int> topThreeRankings = rankings.OrderByDescending(ranking => ranking).Take(3); Console.WriteLine("The top three ranks follow:"); foreach (int ranking in topThreeRankings) { Console.WriteLine(ranking); }
The TakeWhile method takes elements based on predicate function conditions until it encounters an element out of compliance with the condition. Review its syntax below:
public static IEnumerable<TSource> TakeWhile<TSource>( this IEnumerable<TSource> source, Func<TSource, bool> predicate )
Review an example of its use below:
string[] candies = { "gum", "chews", "chocolate", "gummi", "lollipop", "sourpower" }; IEnumerable<string> query = candies.TakeWhile(candy => String.Compare("gummi", candy, true) != 0); foreach (string candy in query) { Console.WriteLine(candy); }