gpt4 book ai didi

c# - Linq 自定义排序

转载 作者:行者123 更新时间:2023-11-30 19:38:35 25 4
gpt4 key购买 nike

我有一个包含 2 个属性(id 和字母)的对象列表。这些对象(a、b、c 和 d)可以正好有 4 个不同的字母值。当我对这些对象进行排序时,首先我想按字母排序。然后我想按id排序。当我按字母排序时,我希望顺序是 a、b、d、c。我在获取此自定义排序时遇到问题。使用 linq 时,我尝试了这样的操作:

ListOfObjects.OrderBy(t => t.letter).ThenBy(t => t.letter.StartsWith("c") ? 2 : 1).ThenBy(t => t.id);

我的想法是,您可以简单地将字母以 c 开头的对象向下移动到列表底部。但是,这似乎不起作用。你们有什么想法吗?任何帮助将不胜感激。

最佳答案

只需颠倒你的前两个条件:

ListOfObjects.OrderBy(t => t.letter.StartsWith("c") ? 2 : 1)
.ThenBy(t => t.letter)
.ThenBy(t => t.id);

第一个条件将所有 c 移动到末尾,然后按 letter 排序,然后按 id 排序。

由于您的第一个条件已经按字母 排序,尝试再次按字母排序没有效果。

关于c# - Linq 自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32012762/

25 4 0
文章推荐: javascript - javascript中的构造函数参数
文章推荐: javascript - 下载文件时Angular忽略离开页面事件
文章推荐: c++ - 创建只读不可删除文件
文章推荐: c# - 如何将 IEnumerable 转换为 IEnumerable