2014-09-22 12 views
1

可以說我有一個由逗號分隔的文件列表。在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)) 

由於包含屬性是找到這個其他的文件...但我不希望它。我希望這些文件完全基於string()進行匹配。

有沒有更好的方式來做到這一點,而不需要通過每個文件循環?一個更嚴格的方式,使其成爲「包含」的嚴格條件?

謝謝你的幫助!

回答

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轉換

相關問題