Nikdy jsem na to zatím nenarazil, nebo si toho minimálně nevšimnul, ale v LINQ dotazu platí následující:
Guid.Empty != new Guid("00000000-0000-0000-0000-000000000000")
konkrétní příklad:
var a = query.Where(row => row.InvoiceId == Guid.Empty);
var b = query.Where(row => row.InvoiceId == new Guid("00000000-0000-0000-0000-000000000000"));
logicky bych čekal, že výsledek bude identický, tedy a i b budou obsahovat kolekci identických objektů, ale výsledek je ten, že a obsahuje prázdnou kolekci, b obsahuje všechny záznamy kde je InvoiceId rovno Guid.Empty, což je sice to samé, LINQ to ale zjevně interpretuje jinak a první příklad je tedy nefunkční, respektive nevrací očekáváné výsledky.
Na otázku PROČ jsem nenašel žádnou smysluplnou odpověď. BUG?