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

C# 为什么我的文件数组不是按数字顺序排列的?,c#,.net,arrays,file,sorting,C#,.net,Arrays,File,Sorting,通常以手动升序,我会得到如下结果: 1 1001 1006 1008 1009 101 1016 1017 1019 1026 .... 如何对该数组进行排序,使所有内容都按数字顺序排列???列表按字母顺序排列。你想要的是把它们按数字顺序排列。如果它们是数字,您可以这样做: 如果您想在仍然使用linq的情况下过滤掉不是数字的文件名,可以执行以下操作: Directory.GetFiles(@"C:\Users\user\Downloads\CaptchaCollection\Small").

通常以手动升序,我会得到如下结果:

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

如何对该数组进行排序,使所有内容都按数字顺序排列???

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

如果您想在仍然使用linq的情况下过滤掉不是数字的文件名,可以执行以下操作:

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(name => int.Parse(Path.GetFileNameWithoutExtension(name))).
    OrderBy(number => number).
    ToArray();

可能重复的可能重复的可能重复的感谢如此之多:@Steve感谢你指出这一点,以防我不小心把一些非数字放在那里。非常感谢:@Steve感谢你指出这一点,以防我不小心把一些非数字放在那里。
Directory.GetFiles(@"C:\Users\user\Downloads\CaptchaCollection\Small").
    Select(name => int.Parse(Path.GetFileNameWithoutExtension(name))).
    OrderBy(number => number).
    ToArray();
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();