using System.Collections.Generic;
public static void Main()
var list = CreateTestData();
Console.WriteLine("Before\n--------");
var sorted = SortBy(list, x => x.Test, SortDirection.Descending);
Console.WriteLine("After\n--------");
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();
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() });
public string Test { get; set; }
public enum SortDirection