[英]Linq, OrderByDescending, First, and the nefarious 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();
entities.Periods是一个包含两个Period对象的集合,每个对象都有一个unique UID
。
根据我理解的一切,p1和p2应该是相同的。
然而,在我的环境中,它们不是。
p1是正确的(即它等于集合中具有最大UID的Period对象)。
但是,p2不正确(即它等于集合中的其他Period)。
有任何想法吗?
Linq to Entities上的DefaultIfEmpty()
不保证维持OrderByDescending()
建立的顺序,(也见这里 )顺序应该始终是最后的,这就是第一种情况有效的原因 - 但是你不应该使用我认为- 这正是FirstOrDefault()
的用途:
EDMXModel.Classes.Period p1 = entities.Periods
.OrderByDescending(ap => ap.UID)
.FirstOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.