C# IOrderedEnumerable (Query Expression With orderby)Use a query expression with orderby and then a foreach-loop over the IOrderedEnumerable that is returned.
IOrderedEnumerable. With a C# query expression (beginning with from) we can sort a collection of elements. When we specify an orderby clause, an IOrderedEnumerable is returned.
Similar to IEnumerable. An IOrderedEnumerable does the same thing an IEnumerable does, and we can use an IOrderedEnumerable variable where an IEnumerable is needed.
An example program. Consider now this program. We have a string array of 3 values. We use a query expression (starting with "from") to sort the values.
And This returns an IOrderedEnumerable. We can pass IOrderedEnumerable to methods that require IEnumerable.
Note Usually we do not use IOrderedEnumerable directly—we can just use the variable as though it is an IEnumerable.
C# program that uses IOrderedEnumerable, foreach-loop
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { var animals = new string[] { "bird", "cat", "ant" }; var result = from animal in animals orderby animal ascending select animal; // Our result is an IOrderedEnumerable. // ... We can use it as an IOrderedEnumerable. Test(result); // We can use the IOrderedEnumerable as an IEnumerable. Test2(result); // We can use extension methods for IEnumerable on IOrderedEnumerable. Console.WriteLine("Count: " + result.Count()); } static void Test(IOrderedEnumerable<string> result) { // We can loop over an IOrderedEnumerable. foreach (string value in result) { Console.WriteLine("IOrderedEnumerable: " + value); } } static void Test2(IEnumerable<string> result) { foreach (string value in result) { Console.WriteLine("IEnumerable: " + value); } } }
IOrderedEnumerable: ant IOrderedEnumerable: bird IOrderedEnumerable: cat IEnumerable: ant IEnumerable: bird IEnumerable: cat Count: 3
Notes. The program shows that "foreach" can be used on IOrderedEnumerable and IEnumerable. This is a common use for these interfaces—looping over them.
Extensions The Count() extension method (which loops over the entire collection in some cases) can also be used on IOrderedEnumerable.
For most programs, we can focus on IEnumerable instead of IOrderedEnumerable. The distinction is not important. But it does indicate that the values have been sorted (by an orderby clause).
© 2007-2021 sam allen. see site info on the changelog