c# - 给定所需的排序层次结构,如何自定义对字符串列表进行排序?
问题描述
我想以List<string>
特定方式对 a 进行排序。下面是一个单元测试,显示了输入、具体方式(我称之为“层次结构”——请随时更正我的术语以便我学习)和所需的输出。代码应该是不言自明的。
[Test]
public void CustomSortByHierarchy()
{
List<string> input = new List<string>{"TJ", "DJ", "HR", "HR", "TJ"};
List<string> hierarchy = new List<string>{"HR", "TJ", "DJ" };
List<string> sorted = input.Sort(hierarchy); // <-- does not compile. How do I sort by the hierarchy?
// ...and if the sort worked as desired, these assert statements would return true:
Assert.AreEqual("HR", sorted[0]);
Assert.AreEqual("HR", sorted[1]);
Assert.AreEqual("TJ", sorted[2]);
Assert.AreEqual("TJ", sorted[3]);
Assert.AreEqual("DJ", sorted[4]);
}
解决方案
另一种方法:
var hierarchy = new Dictionary<string, int>{
{ "HR", 1},
{ "TJ", 2},
{ "DJ", 3} };
var sorted = strings.OrderBy(s => hierarchy[s]).ToList();
推荐阅读
- list - 从 Lotus Notes 中读取所有类别
- c# - 允许用户灵活查询数据库但防止 SQL 注入
- docker - golang 应用程序的 Docker 临时图像找不到二进制“没有这样的文件或目录”
- android - 从 Sqlite 数据酶中获取数据并在 android studio 的 recyclerview 中显示
- matlab - PDF报告生成器中格式的表格字段 - Matlab
- c++ - Qt 通过回调更新 UI 中的图像
- blueprism - 为什么我的 HTML 元素可以在 Application Modeller 中识别,但不能在运行时识别?(蓝棱镜)
- angular - 在数组 angular 9 中转换来自 api 的数据并获取最后 5 个
- python-3.x - Django 邮件未在视图中向 def 发送邮件错误
- powershell - 我想维护当前的日期文件