【发布时间】:2010-11-26 19:15:13
【问题描述】:
所以我得到了一些这样的文件:
int pathLength = path.Length + 1;
var files = Directory.GetFiles ( path, "*.*", SearchOption.AllDirectories )
.Where ( s => s.EndsWith ( ".bmp", StringComparison.OrdinalIgnoreCase ) ||
s.EndsWith ( ".jpg", StringComparison.OrdinalIgnoreCase ) )
.Select ( s => s.Substring ( pathLength, s.Length - pathLength ) )
.ToList ( );
在这样排序之前:
FileComparer fileComparer = new FileComparer ( );
files.Sort ( fileComparer );
但是对于排序,我需要使用 ToList。我想知道我是否可以以同样的方式将排序添加到 Linq 并摆脱 ToList?
【问题讨论】:
-
您也在寻找
Path.GetExtension方法。另外,您不需要Substring的第二个参数。看我的回答。 -
抱歉刚刚看到。 FileComparer 实现 IComparer
如果路径有 \\ 它首先出现(因为它是一个目录),否则它是一个文件名,在后面。否则只是一个普通的字符串比较。 -
好的,那么您的 OrderBy 子句之后也需要一个 ThenBy 子句。