假设我有一个用逗号分隔的文件列表。
Dim listOfFiles As String() = filesPosted.Split(",")
我使用DirectoryInfo来获取文件列表并将其发送到另一个阵列。
Dim files = New DirectoryInfo(StorageRoot) _
.GetFiles("*", SearchOption.TopDirectoryOnly) _
.Where(Function(f) Not f.Attributes.HasFlag(FileAttributes.Hidden)) _
.Where(Function(f) filesPosted.Contains(f.Name)) _
.[Select](Function(f) New FilesStatus(f)).ToArray()
我面临的问题是,我需要更严格的条件。我会解释一下:
如果我的listOfFiles包含(abc.txt,xyz.txt)并且正在搜索的目录中有一个aabc.txt文件名,它将返回abc.txt和aabc.txt。我知道这是因为条款的这一部分:
.Where(Function(f) filesPosted.Contains(f.Name))
由于contains属性正在查找此其他文件...但我不想要它。我希望文件完全匹配字符串()。
有没有更好的方法可以在不循环浏览每个文件的情况下执行此操作?更严格的方式使其成为“包含”的严格条件?
感谢您的帮助!
答案 0 :(得分:1)
尝试:
Dim listOfFiles As String() = filesPosted.Split(",").Select(function(f) f.ToLower())
' then
Dim files = New DirectoryInfo(StorageRoot) _
.GetFiles("*", SearchOption.TopDirectoryOnly) _
.Where(Function(f) Not f.Attributes.HasFlag(FileAttributes.Hidden)) _
.Where(Function(f) listOfFiles.Any(function(l) l = f.Name.ToLower())) _
.[Select](Function(f) New FilesStatus(f)).ToArray()
抱歉,C#转为VB.Net转换不好