Dynamic sort example

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
					
public class Program
{
	public static void Main()
	{
        var list = CreateTestData();
        Console.WriteLine("Before\n--------");
 		PrintList(list);
		var sorted = SortBy(list, x => x.Test, SortDirection.Descending);
		Console.WriteLine("After\n--------");
        PrintList(sorted);
	}

    static void PrintList(IEnumerable<SomeType> items)
	{
        foreach (var item in items)
		{
			Console.WriteLine(item.Test);
		}
		Console.WriteLine("--------");
	}
	
	static IList<TSource> SortBy<TSource, TMember>(IEnumerable<TSource> list, Func<TSource, TMember> selector, SortDirection direction)
    {
        if (direction == SortDirection.Descending)
            return list.OrderByDescending(selector).ToList();
        else
            return list.OrderBy(selector).ToList();
    }

    static IList<SomeType> CreateTestData()
	{
        var result = new List<SomeType>(10);
        for (int i = 0; i <= 9; i++)
		{
			result.Add(new SomeType { Test = ((char)65 + i).ToString() });
		}
		return result;
	}
	
}

public class SomeType
{
	public string Test { get; set; }
}

public enum SortDirection
{
    Ascending = 0,
    Descending = 1
}
;