C# 在c上对数组中的文件目录进行排序#
我不想对文件目录进行排序。我有很多文件目录。比如:C# 在c上对数组中的文件目录进行排序#,c#,arrays,file,sorting,directory,C#,Arrays,File,Sorting,Directory,我不想对文件目录进行排序。我有很多文件目录。比如: “C:\Users\user\Desktop\programma\destin\ankara\c11.txt” “C:\Users\user\Desktop\programma\destin\ankara\a12.txt” “C:\Users\user\Desktop\programma\destin\ankara\b11.txt” 但它必须按文件名排序。 我该怎么做 Result i want: a12 at top b11 in the m
“C:\Users\user\Desktop\programma\destin\ankara\c11.txt”
“C:\Users\user\Desktop\programma\destin\ankara\a12.txt”
“C:\Users\user\Desktop\programma\destin\ankara\b11.txt”
但它必须按文件名排序。
我该怎么做
Result i want:
a12 at top b11 in the middle c11 at last.
这里是代码示例
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowDialog();
kaynak = fbd.SelectedPath;
dnm = Directory.GetFiles(kaynak,ftyp, SearchOption.AllDirectories)
.Select(Path.GetFileName)
.ToArray();
dsd = Directory.GetFiles(kaynak, ftyp, SearchOption.AllDirectories);
一种简单的方法是使用带有
Array.Sort
的labmda表达式(请注意,我稍微更改了路径,以显示它与排序无关:
var files = new string[]
{
@"C:\Users\user\Desktop\programlama\destin\ankara\c11.txt",
@"C:\Users\user\Desktop\programlama\destin\a12.txt",
@"C:\Users\user\Desktop\programlama\ankara\b11.txt"
};
Array.Sort(files, (s1, s2) => Path.GetFileName(s1).CompareTo(Path.GetFileName(s2)));
结果:
C:\Users\user\Desktop\programlama\destin\a12.txt
C:\Users\user\Desktop\programlama\ankara\b11.txt
C:\Users\user\Desktop\programlama\destin\ankara\c11.txt
类似于:
filesArray.Select(q=> new { FullPath = q, FileName = Path.GetFileName(q)}).OrderBy(q=> q.FileName).Select(q=>q.FullPath);
也可以使用Linq按路径排序:
var files = new List<string>
{
@"C:\Users\user\Desktop\programlama\destin\ankara\c11.txt",
@"C:\Users\user\Desktop\programlama\destin\ankara\a12.txt",
@"C:\Users\user\Desktop\programlama\destin\ankara\b11.txt"
};
files = files.OrderBy(f => f).ToList();
你是说“排序”很抱歉。排序是正确的。你需要发布你拥有的代码。你可以使用
Array.sort
或Linq的OrderBy
。你能分享一些代码以便我们确定什么是最合适的吗?这里有一张图片显示了我的文件列表。非常感谢。它解决了我的问题。非常感谢。@maccettura我是这里的新手。我选择绿色tic.正确吗?谢谢..是的,你答对了。我不确定你的代码是否能编译。你可能想修改格式并进行双重检查。@maccettura我现在没有坐在电脑前,我从脑海中键入了解决方案,但如果你导入Sytem.Linq名称空间应该没问题。这也解决了问题。非常感谢。我几乎能编译,只是将;
替换为,
。但它不会对原始数组进行排序,只返回已排序的IEnumerable(性能较差,因为它必须在数组中迭代3次)。我曾经试着用智能手机回答问题。事实证明,这毕竟不是一部智能手机——像这样做真的很难。我的建议是——不要那样做。阅读问题已经够难了,正确回答问题就更难了,特别是当你必须在回答中包含代码时。这将是:1)保留原始字符串列表未排序,2)返回IEnumerable,3)按整个路径排序。已编辑。我从帖子上看不清楚他是否想改变原来的名单。无论如何,谢谢你的评论:)更好了,但仍然只需要按文件名排序(最初的问题是关于数组,不是列表,但这只是吹毛求疵:-)@ZoharPeled-Ouch!完全误解了这个问题。说得好。我将投票表决你的答案。谢谢你两次!别担心,这会发生在每个人身上。。。我敢打赌,就连Jon Skeet也因为这个原因删除了答案:-)
C:\Users\user\Desktop\programlama\destin\ankara\a12.txt
C:\Users\user\Desktop\programlama\destin\ankara\b11.txt
C:\Users\user\Desktop\programlama\destin\ankara\c11.txt