我有一个列表,列表中的每个元素都是一个包含特定格式的日期和整数的字符串:yyyyMMdd_number。
List<string> listStr = new List<string> { "20170822_10", "20170821_1", "20170823_4", "20170821_10", "20170822_11", "20170822_5",
"20170822_2", "20170821_3", "20170823_6", "20170823_21", "20170823_20", "20170823_2"};
当使用方法listStr.Sort();
结果如下:
20170821_1 20170821_10 20170821_3 20170822_10 20170822_11 20170822_2 20170822_5 20170823_2 20170823_20 20170823_21 20170823_4 20170823_6
预期输出:
20170821_1 20170821_3 20170821_10 20170822_2 20170822_5 20170822_10 20170822_11 20170823_2 20170823_4 20170823_6 20170823_20 20170823_21
方法:我认为每个字符串(day_number)都会用下划线分隔,然后按数字进行比较和排序。 但是在这种情况下,请建议我使用 LINQ 解决方案或更好的排序方法。
最佳答案
由于日期采用可以按字典顺序排序的格式,您可以使用字符串排序按日期前缀排序,并通过解析整数来解决关系:
var sorted = listStr
.OrderBy(s => s.Split('_')[0])
.ThenBy(s => int.Parse(s.Split('_')[1]));
关于C# - 如何通过 linq 对列表字符串编号进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45788512/