Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq、OrderByDescending、First和邪恶的DefaultIfEmpty_C#_Linq_Linq To Entities_Defaultifempty - Fatal编程技术网

C# Linq、OrderByDescending、First和邪恶的DefaultIfEmpty

C# Linq、OrderByDescending、First和邪恶的DefaultIfEmpty,c#,linq,linq-to-entities,defaultifempty,C#,Linq,Linq To Entities,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).Defau

希望这是一个简单的问题,我不理解一些基本的东西。下面是我正在处理的一个应用程序中的两个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对象的集合,每个对象都有一个
唯一的UID

据我所知,p1和p2应该是相同的

然而,在我的环境中,它们不是

p1是正确的(即它等于集合中UID最大的周期对象)

但是,p2不正确(即它等于集合中的其他时段)

有什么想法吗?

DefaultIfEmpty()
关于Linq to Entities并不能保证维护由
OrderByDescending()
建立的顺序,(另请参见)顺序应该始终是最后一个,这就是为什么第一种情况有效的原因-但在我看来,您不应该使用这两种情况-这正是
FirstOrDefault()
用于:

EDMXModel.Classes.Period p1 = entities.Periods
                                      .OrderByDescending(ap => ap.UID)
                                      .FirstOrDefault();