CSharp · Console
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
}