2011-09-15 55 views
1

我在搜索其文件名中包含特定條件的文件的目錄時遇到了一些麻煩。以下是我的代碼,它大部分時間捕獲正確的文件,但有時會跳過需要捕獲的文件。做這個的最好方式是什麼?在DirectoryInfo中搜索字符串

非常感謝。

所以下面我試圖捕獲一個目錄中的所有文件的單詞「FINAL」和正確的Actual_Date。我有一個名爲dtResult2的數據表,其中存儲了這些Actual_Dates。

foreach (DataRow drow in dtResult2.Rows) 
{   
    //check for Null and start searching if not Null 
    if(drow["Well_Name"] != DBNull.Value) 
    { 
     //Now lets start searching the entire ARCHIVE folder/subfolders for a DWG that has 
     //this Well_Name and Actual_Date with FINAL in File Name... 

     DirectoryInfo myDir = new DirectoryInfo(myCollection3[v]); 
     //Collect the Final, Approved DWGs only... 

     var files = myDir.GetFileSystemInfos().Where(f => f.Name.Contains("FINAL") || f.Name.Contains(drow["Well_Name"].ToString()) || f.Name.Contains(drow["Actual_Date"].ToString())); 

     //More code not shown due to premise of question.. 
    } 
} 
+0

使它等於而不是包含。 –

+0

同時檢查此鏈接的搜索模式http://msdn.microsoft.com/en-us/library/8he88b63.aspx –

回答

0

代碼沒有問題大概where條件是錯誤的。

我可以建議你把它轉換成經典的for/foreach,它允許你調試條件,也是更高性能。你甚至可以,只要你有識別錯誤將其轉換回LINQ表達式

0

最有可能的問題在於使用Contains方法區分大小寫:

f.Name.Contains("FINAL")不會匹配「最終」它會只有匹配「FINAL」。

使用IndexOf可獲得更好的結果case insensitive comparisons