Randomly Sorting a List using Extension Methods
I was trawling through some old code I had written while doing some “refactoring” and came across this little nugget. I wanted to sort a list of objects that I was retrieving from a database using LINQ to SQL into a random order. Seeing as extension methods are all the rage, I decided to use them…
public static class ListExtensions { public static IEnumerable<T> Randomise<T>(this IEnumerable<T> list) { Random rand = new Random(); var result = list.OrderBy(l => rand.Next()); return result; } }
How does it work…? It adds the Randomise() extension method to the end of any IEnumerable<T> (e.g. List<T>) and uses the OrderBy function to change the sort order based on a randomly generated number.
var randomCategories = context.Categories.Randomise();
The above code will execute the Randomise function to reorder the list of Category objects retrieved from the context randomly and assign the result to randomCategories.
Posted on 8 October, 2008, in Dev Stuff and tagged .Net 3.5, C#, Extension Methods, LINQ, Visual Studio 2008. Bookmark the permalink. Leave a comment.
Leave a comment
Comments 0