我列出目录的文件,然后按文件扩展名对其进行排序:
Dim Files As List(Of IO.FileInfo) = Get_Files(Directory, True, ValidExtensions).OrderBy(Function(x) x.Extension).ToList
如何在同一指令中添加另一个参数来对其进行排序呢?
x.Name.ToLower.Contains("word")
我试图用逗号分隔它(是的,这么愚蠢):
Dim Files As List(Of IO.FileInfo) = Get_Files(Directory, True, ValidExtensions).OrderBy(Function(x) x.Extension, x.Name.ToLower.Contains("word")).ToList
UPDATE
我尝试使用@ p.s.w.g解决方案但未返回所需的结果。
但如果我分开制作两个列表,我会在第二个列表中得到所需的排序:
Dim Files As List(Of IO.FileInfo) = _
Get_Files(Directory, True, ValidExtensions).OrderBy(Function(x) x.Extension).ToList
Dim Files2 As List(Of IO.FileInfo) = _
Files.OrderBy(Function(x) x.Name.ToLower.Contains("word")).ToList
但我想改进它只在第一个列表中进行。
答案 0 :(得分:1)
使用ThenBy
方法:
Dim Files As List(Of IO.FileInfo) = _
Get_Files(Directory, True, ValidExtensions) _
.OrderBy(Function(x) x.Extension) _
.ThenBy(Function(x) x.Name.ToLower.Contains("word")) _
.ToList
更新以使其名称中不包含"word"
的所有项目成为第一位,使用此项:
Dim Files As List(Of IO.FileInfo) = _
Get_Files(Directory, True, ValidExtensions) _
.OrderBy(Function(x) x.Name.ToLower.Contains("word")) _
.ThenBy(Function(x) x.Extension) _
.ToList
当然,您可以随时将OrderBy
与OrderByDescending
和ThenBy
与ThenByDescending
交换,以便在必要时更改单个排序键的顺序。