在vb.net中,如何在查询中使用具有特定文件名的目录信息

时间:2014-09-22 17:47:45

标签: vb.net

假设我有一个用逗号分隔的文件列表。

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属性正在查找此其他文件...但我不想要它。我希望文件完全匹配字符串()。

有没有更好的方法可以在不循环浏览每个文件的情况下执行此操作?更严格的方式使其成为“包含”的严格条件?

感谢您的帮助!

1 个答案:

答案 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转换不好