As Peter pointed out, this:
var review22 = from r in myDataContext.Reviews
where r.Id == 22
select r;
could return multiple records. You and I (and the database) know that the Id is unique so it can only return one item. However, LINQ doesn't know that. The "where" criteria could easily be something that returns multiple records (like where myClient.City = "Amsterdam" for example).
By using Single() you indicate you know only one item will be returned, so LINQ gives you exactly one item, and not a collection with only one item in it.
Finally, SingleOrDefault is useful if you're not sure if your query returns a record. When there isn't an item with an Id of 22, Single() will crash whereas SingleOrDefault will return null when the item could not be found.
Hope this helps,
Imar
---------------------------------------
Imar Spaanjaars
http://Imar.Spaanjaars.Com
Everyone is unique, except for me.
Author of
Beginning ASP.NET 3.5 : in C# and VB,
ASP.NET 2.0 Instant Results and
Dreamweaver MX 2004
Want to be my colleague? Then check out this post.