c# - 按 desc 或 asc 对列表进行排序,具体取决于当前列表的内容

标签 c# list sorting webforms

我有一个列表,我想以与当前相反的顺序对结果进行排序,以模仿用户单击列标题超链接。目前,我有以下内容:

 dsList.Sort((x, y) => String.CompareOrdinal(x.DisplayName, y.DisplayName));

但这仅按升序排序。我知道我会做降序排序:

 dsList.Sort((x, y) => String.CompareOrdinal(x.DisplayName, y.DisplayName)*-1);

但是,我不想检测它当前是什么并决定执行哪种操作。

有道理吗?

谢谢。

澄清一下,我无法使用 Reverse,因为我有超过 1 列可以排序,因此我需要能够指定要排序的值。

下面的方法有效,但不适用于空值。如果有空白,排序就会卡住。

  dsList.Sort((x, y) => String.CompareOrdinal(x.Surname, y.Surname) * (strB != null && (strA != null && String.Compare(strA, strB) == -1) ? -1 : 1));

最佳答案

怎么样

dsList.Sort((x, y) => String.CompareOrdinal(x.DisplayName, y.DisplayName)*(dsList[0] < dsList[1]?-1:1));

编辑:在您的评论中,当存在重复或空值时,您似乎遇到了问题......这应该可以解决这个问题

dsList.Sort((x, y) => String.CompareOrdinal(x.DisplayName, y.DisplayName)*String.CompareOrdinal(dsList[0].DisplayName, dsList[dsList.Length-1].DisplayName));

关于c# - 按 desc 或 asc 对列表进行排序,具体取决于当前列表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350238/

相关文章:

java - 如何在抽象类型的 java 中初始化 List,以便以后可以将子类型添加到列表中

python - 尝试通过列表理解来完成这个简单的功能

Python:如何在数字初级排序中执行二级降序字母排序

c++ - 使用先前 move 过的输出迭代器调用 move() 是标准 C++ 吗?

c# - 为什么 integer == null 在 C# 中是一个有效的 boolean 表达式?

Python:(x,y)平面中一堆点之间的平均距离

c# - "Unwrapping"发布 JSON

c++ - 在 C++11 中使用 std::sort 和 lambda 函数对动态分配的多维 C 数组进行排序

c# - 确保字符串不包含特定字符的快速方法

c# - 您对一组编码标准或最佳实践有什么好的建议/链接可以遵循吗?