The behaviour described below is specific to .net-3.5 only
I just ran across the most astonishing behavior in the C# compiler;
I
Actually there is a case when Guild == null will return true.
However it is kinda hard to explain.
In ORM mapping frameworks (openAccess for example) when you have a Guid field which will have a default value of Guid.Empty of course it is possible to have the fallowing scenario :
In short (using OpenAccess but probably not only) :
var item = GetItems().Where(i => i.SomeGuidField == null); will work and u will get items with null guid this is after an schema update. item.First().SomeGuidField will return Empty Guid
var item = GetItems().Where(i => i.SomeGuidField == Guid.Empty); will not work even if after the population of the item it will be Guid.Empty and will return empty result.