2013-05-07 88 views
2

我想驗證在zip文件中是否存在具有特定文件名的文件。有沒有比以下更好的方法來做到這一點?C#代碼重構(lambda表達式)

 using (ZipArchive archive = ZipFile.OpenRead(zipFilePath)) 
     { 
      if (!archive.Entries.Any(e => e.Name.Equals(FileNameToCheckFor))) 
      { 
       // Throw an exception 
      } 

      foreach (ZipArchiveEntry file in archive.Entries) 
      { 
       // Do some processing. This is unrelated. 
      } 
     } 
+1

也許嘗試http://codereview.stackexchange.com/? – user1306322 2013-05-07 00:07:12

+0

對我來說看起來非常好。除了我更願意在'using'中使用'var'而不是類型名稱,例如:'使用(var archive = ...)' – 2013-05-07 00:08:00

+1

這似乎是非常合理的,只不過列舉了兩次條目。如果有辦法更好地組織你的工作,你或許可以避免這種情況。這一點的重要性取決於zip文件的大小,因爲通過兩次翻閱2PB Zip文件可能是一個壞主意...... – 2013-05-07 00:08:44

回答

4

由於ZipArchive.GetEntry返回NULL,如果條目不存在,你可以替換爲lambda表達式:

if (archive.GetEntry(FileNameToCheckFor) == null) 
{ 
     // Throw an exception 
} 

這稍微更簡潔,但這並不意味着任何不正確有關原始碼。