InvalidOperationException LINQ

December 12th, 2009.
Filed under Programming.

Quick note on “Sequence contains no elements” error message or by getting “InvalidOperationException” when calling Single from a LINQ query.

Change Single< Object >() to SingleOrDefault< Object >() so it will return null if none found without adding a try catch block.

Here is an example:

public Boolean getIsUserValid(User user)
        {

             User foundUser = (db.Users.Where(d => d.username.Equals(user.username)
                             && d.password.Equals(user.password))).SingleOrDefault();
              if (foundUser == null) return false;
              else return true;

        }// end getIsUserValid()

LINQ Query can also be wrten like so:

User foundUser = (db.Users.SingleOrDefault< User >(u => u.password.Equals(user.password) && u.username.Equals(user.username)));

Leave a Reply