gpt4 book ai didi

c# - Linq、OrderByDescending、First 和邪恶的 DefaultIfEmpty

转载 作者:太空狗 更新时间:2023-10-29 21:24:14 24 4
gpt4 key购买 nike

希望这是我不了解基本知识的简单问题。下面是我正在处理的应用程序中的两个 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 的 Period 对象)。

但是,p2 是不正确的(即它等于集合中的另一个 Period)。

有什么想法吗?

最佳答案

Linq to Entities 上的

DefaultIfEmpty() 不保证维持由 OrderByDescending() 建立的顺序,(另见 here)顺序应始终是最后一个这就是第一种情况有效的原因 - 但我认为你不应该使用任何一种 - 这正是 FirstOrDefault() 的用途:

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

关于c# - Linq、OrderByDescending、First 和邪恶的 DefaultIfEmpty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7615237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com