Linq, OrderByDescending, First и гнусный DefaultIfEmpty

Надеюсь, я просто не понимаю чего-то базового. Ниже приведены два оператора Linq из приложения, над которым я работаю.

EDMXModel.Classes.Period p1 = entities.Periods.DefaultIfEmpty(null).OrderByDescending(ap => ap.UID).First();

EDMXModel.Classes.Period p2 = entities.Periods.OrderByDescending(ap => ap.UID).DefaultIfEmpty(null).First();

entity.Periods - это набор, содержащий два объекта Period, каждый с уникальным UID .

Насколько я понимаю, p1 и p2 должны быть одинаковыми.

Однако в моем окружении это не так.

p1 правильный (т.е. он равен объекту Period с наибольшим UID в наборе).

p2, однако, неверен (т.е. он равен другому периоду в наборе).

Есть идеи?

6
задан Enigma State 30 September 2011 в 20:46
поделиться