Reimplementing LINQ to Objects: Part 45 - Conclusion and List of Posts
Table of Contents
You may consider it a little odd to have a list of posts as the final part in the series, but it makes sense when you consider that visiting the Edulinq tag page shows results in reverse chronological order. At that point, a newcomer will hopefully hit this post first, and then find it easier to navigate to the first post. Anyway...
- Introduction
- Where
- Select
- Range
- Empty
- Repeat
- Count and LongCount
- Concat
- SelectMany
- Any and All
- First, Single, Last and the ...OrDefault versions
- DefaultIfEmpty
- Aggregate
- Distinct
- Union
- Intersect
- Except
- ToLookup
- Join
- ToList
- GroupBy
- GroupJoin
- Take, Skip, TakeWhile, SkipWhile
- ToArray
- ToDictionary
- Ordering:
- Reverse
- Sum
- Min and Max
- Average
- ElementAt and ElementAtOrDefault
- Contains
- Cast and OfType
- SequenceEqual
- Zip
- AsEnumerable
- Guiding principles
- What's missing?
- Comparing implementations
- Optimization
- How query expressions work
- More optimization
- Out-of-process queries with IQueryable
- Aspects of design
- Conclusion and List of Posts
Thank you, and good night
When I started this series, I hadn't realised quite how much there would be to write about. The main thrust was going to be that the implementation of LINQ is simple, and it's the design that's clever. As it happened, pretty much every operator ended up raising some interesting issue or other. However, hopefully the series has still "immersed" you in LINQ to Objects to some extent, and clarified how it all hangs together. It would be gratifying to think that the description at the start of each post may end up being used as a sort of "unofficial alternative documentation" with some more details than MSDN provides, but we'll see whether than happens over time.
A number of people have asked me whether there'll be an ebook version of this series, and the answer is currently "I don't know." I have a few plans afoot, but I can't tell where they'll lead yet. Suffice to say I like the idea, and I'm looking at some options.
Anyway, thank you for reading as much of the series as you have, and I hope you've enjoyed it as much as I have.
Just in case you're wondering, I'll probably go back to posting about C# 5's async support pretty soon...