n-6ren">
gpt4 book ai didi

c# - 为什么我的文件数组不是按数字顺序排列的?

转载 作者:行者123 更新时间:2023-11-30 20:51:51 27 4
gpt4 key购买 nike

var files = Directory.GetFiles(@"C:\Users\user\Downloads\CaptchaCollection\Small").OrderBy(name => name).ToArray();

for (int i = 0; i < files.Length; i++)
{
MessageBox.Show(files[i].ToString());
}

所以我正在用消息框测试我的文件数组,但它似乎没有按顺序给出名称。

我的文件名为n.png,其中n 是一个数字。因为我删除了一些图像,所以没有图案。

到目前为止,这是输出:

1
1001
1006
1008
1009
101
1016
1017
1019
1026
....

通常手动升序我会得到类似的东西:

1
2
4
5
7
...

如何对这个数组进行排序,以便所有内容都按数字顺序排列?

最佳答案

列表按字母顺序排列。你想要的是将它们作为数字排序。如果它们数字,您可以这样做:

Directory.GetFiles(@"C:\Users\user\Downloads\CaptchaCollection\Small").
Select(name => int.Parse(Path.GetFileNameWithoutExtension(name))).
OrderBy(number => number).
ToArray();

如果你想在仍然使用 linq 的同时过滤掉不是数字的文件名,你可以这样做:

Directory.GetFiles(@"C:\Users\user\Downloads\CaptchaCollection\Small").
Select(nameWithExtension => Path.GetFileNameWithoutExtension(nameWithExtension)).
Where(name => {int number; return int.TryParse(name, out number);}).
Select(name => int.Parse(name)).
OrderBy(number => number).
ToArray();

关于c# - 为什么我的文件数组不是按数字顺序排列的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21345288/

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