I’ve got a (SQL Server) database table called Category.
And another database table called SubCategory.
SubCategory has a foreign key relationship to Category. Because of this, thanks to LINQ, each Cateogory has a property called SubCategories and LINQ is nice enough to return all the SubCategories associated with my Category when I grab it.
If I want to sort the Categories alphabetically, I can just do:
return db.Categories.OrderBy(c => c.Name);
However, I have no idea how to order the SubCategories collection inside each Category.
My goal is to return a collection of Categories, where all of the SubCategory collections inside of them are ordered alphabetically by Name.
In cases like this, I prefer to use extension methods – as they do a great job of encapsulating this logic for reuse – and a good name can also help make the logic easily discoverable.
For example, in projects where I’ve used L2S in MVC applications, I just create a folder in my Models folder called Extensions – then I drop ‘extension’ methods in there per model/L2S class/etc (just to keep things organized).
Then, for this case I’d create something like so:
And then, from within my MVC view, for example, if I’m passing in the Category as the Model, I could just do something as simple as:
That’s an MVC example – but you could apply that pretty-much anywhere as the idea is that you’re ‘decorating’ your object with a method that explicitly does what you’re after, and you’re not making additional copies/etc.