gpt4 book ai didi

c# - Linq orderby 没有按预期工作

转载 作者:行者123 更新时间:2023-11-30 19:15:36 24 4
gpt4 key购买 nike

我正在尝试从数据库中获取数据,但没有得到预期的结果。

var totalNews = GetNewsData(false, CmsPagesRepository.CurrentUserSettings.CmsLanguageID)
.OrderBy(n => n.Priority)
.ThenBy(n => n.Index)
.ThenBy(n => n.Title);

我有一个新闻表,其中有一个索引列和一个优先级列,我想按优先级对新闻进行排序,如果优先级为空,则首先显示具有优先级的新闻,然后再显示其他新闻。但是现在如果 totalNews 列表中有 3 个索引为 (1,4,2) 和 priority(null,0,1) 的新闻,我会排在第一个位置,即 Priority null 和 index 1. 我需要纠正什么?

最佳答案

虽然您接受的答案会起作用,但我不太喜欢它。首先,万一你有一些最大的整数,它们将不会根据 null 正确排序。一个好的解决方案适用于任何输入,而不仅仅是普通输入。二是代码不符合规范。您的规范是“首先按优先级是否为空排序,然后按优先级排序,然后按...”,所以代码应该这样读。我建议你写:

GetNewsData(...)
.OrderBy(n => n.Priority == null) // nulls last
.ThenBy(n => n.Priority)
.ThenBy(n => n.Index)
.ThenBy(n => n.Title);

关于c# - Linq orderby 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36036664/

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