gpt4 book ai didi

c# - 对每个元素包含 2 个值的列表进行排序

转载 作者:行者123 更新时间:2023-12-01 22:16:43 25 4
gpt4 key购买 nike

我有一个文本文件,其中包含以下格式的值:时间|ID:

180|1
60 |2
120|3

现在我想按时间对它们进行排序。输出还应该是:

60 |2
120|3
180|1

如何解决这个问题?有了这个:

var path = @"C:\Users\admin\Desktop\test.txt";

List<string> list = File.ReadAllLines(path).ToList();

list.Sort();

for (var i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}

我没有成功......

最佳答案

完成这项工作需要 3 个步骤:

1) 通过分隔符分割

2) 转换为 int 因为在字符串比较中 6 位于 1 或 10 之后

3) 使用OrderBy对您的收藏进行排序

这是一个 linq 解决方案,在一行中完成所有 3 个步骤:

list = list.OrderBy(x => Convert.ToInt32(x.Split('|')[0])).ToList();

说明

x => lambda 表达式,x 表示列表中的单个元素
x.Split('|')[0] 分割每个字符串并仅获取其第一部分(时间)
Convert.ToInt32(.. 将时间转换为数字,以便按照您想要的方式进行排序

list.OrderBy( 对您的集合进行排序

编辑:

为了理解为什么您首先得到结果,这里有一个使用 CompareTo 比较字符串表示形式中的数字的示例。方法:

int res = "6".CompareTo("10");

res 的值为 1(表示 6 大于 10 或 6 小于 10)

根据文档->备注:

The CompareTo method was designed primarily for use in sorting or alphabetizing operations.

关于c# - 对每个元素包含 2 个值的列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45812378/

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