Skip to content

Teaching LINQ

6 September 2008

At work, I’m involved in a few things:

* I’m the scrum master of one of our development squads
* I’m a LINQ and functional programming evangelist
* I’m a co-sponsor of the weekly development Lunch and Learn meetings
* I’m moderating our software engineering book club

In this post, I’m going to talk a little about LINQ and the challenges I’m facing teaching LINQ to Objects to the team.

Our weekly Lunch and Learn sessions involve some preliminary discussion, then we turn the keyboard over to the audience. Our development staff consists of good programmers who largely learned the craft by rote, so few if any of us have formal computer science backgrounds. Hence, introductory sessions start at the very beginning.

The first LINQ session covered extension methods, because LINQ makes heavy use of them. We presented as an example nUnit’s Assert.AreEqual(expected, actual) method. We showed how an extension method could make this read expected.AreEqual(actual). Then, we had our volunteer do the same for strings.

We pointed out that this could get tedious, as AreEqual supports lots of types. So, we asked a volunteer to solve the problem in general. This proved challenging, and we discovered a hole in the team’s collective knowledge base: generics.

Once we got that straight, we had a volunteer implement a generic extension method for nUnit’s IsInstanceOfType(type) test method to illustrate type inference.

The remaining 20 minutes, we introduced the Select clause. Folks were confused about Func<T, bool>, and about lambdas. We didn’t have enough time to cement the concepts, but we’ll continue from there next week.

No comments yet

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: