The Linq FirstOrDefault() Method and Null Resultsets

I was doing some Linq programming and kept hitting the problem where if there were no results to a query, but I wanted to call First() or Single() to get a single row, I kept getting “Sequence contains no elements” exceptions.

There didn’t seem to be an easy way to tell if the resultset was null, because it wasn’t really NULL, not in a C# sense. And trying to get Count() would throw a separate exception if there really was at least one element, because I couldn’t enumerate a sequence more than once.

Luckily an offhand comment by Scott Guthrie on his blog helped me out a lot. Use FirstOrDefault() with a dummy criteria as an argument:

var record = <blah>.GetResult().FirstOrDefault(p => <0)

If there are no results, this code will return NULL to the variable, which you can then easily check in your code.

Thanks Scott!


3 Responses to “The Linq FirstOrDefault() Method and Null Resultsets”

  1. 2 Michael Hanney June 12, 2008 at 3:06 pm

    Nice. This is exactly what I was looking for. Thanks for posting.

  2. 3 JDS October 2, 2008 at 2:27 am

    There is an overload for FirstOrDefault that takes no parameters!

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

TwitterCounter for @anthonyrstevens
Add to Technorati Favorites

RSS Feed

View Anthony Stevens's profile on LinkedIn

%d bloggers like this: