Thinking Linq


I’ve been comfortable using LINQ for what seems like a long time. I’m noticing that I’ve been implementing some of the lesser used functions a bit more as of late, but I’m not sure exactly when they’re appropriate. Take the following method that is a prime candidate for leveraging LINQ.

Any time you see that if inside a foreach in C#, you’ll probably want to write this differently. A year ago, I probably would have written this:

More recently, my thought process makes me want to write that same code like so:

For some reason, I like the second LINQ implementation better. It just seems to read nicer and reflect the method’s intent a bit more accurately.

I don’t have a strong preference either way, so I decided to see how different they actually are in IL:

As far as I’m concerned, these are exactly the same. I’m going to go with the second implementation, the one that uses .SkipWhile().

Using My Powers for Good
Why Source Control Matters and Hopefully it’s Git