2016-05-31 7 views
1

ダウンロードしたい同じファイルを複数のフォルダに持っています。最初にforeachループに1つのディレクトリを追加し、ディレクトリに重複ファイルがある場合、重複する値をList<>から削除することができますが、2回目にforeachループが実行され、既にzipに追加された同じファイルジップ、と私は重複する値が含まれていることジップに直面している...重複する値をCで郵便番号から削除するには

はジップから重複した値を除去するためのいずれかの方法があります... DotNetZipライブラリを使用して

using (var Zip = new ZipFile()) 
{ 
    foreach (var file in item) 
    { 
     if (file.isCheck == true) 
     { 
      string path = file.path; 
      if (Directory.Exists(path)) 
      { 
       string[] folders = path.Split(new string[] { User.Identity.Name }, StringSplitOptions.None); 
       if (!folders[1].Contains("/")) 
       { 
        folders[1] = Path.Combine("", folders[1]); 
       } 

       string lastFolderName = folders[1]; 
       string security = db.Users.Where(e => e.Email == User.Identity.Name).Select(s => s.SecurityStamp).Single(); 
       string ext = Path.GetExtension(path); 

       if (path.Contains(security)) 
       { 
        Zip.AddDirectory(file.path); 

        List<string> Generalfile = null; 

        Generalfile = db.General.Where(p => p.Folder == lastFolderName || p.Folder.Contains(lastFolderName)).Select(p => p.PathInDb).ToList(); 

        List<string> unique = Generalfile.Distinct().ToList(); 
        foreach (var GF in unique) 
        {    
          Zip.AddFile(GF, "Files"); 
        } 
       } 

       else 
       { 
         if (Directory.Exists(file.path)) 
         Zip.AddDirectory(file.path); 
         else 
         Zip.AddFile(file.path, "Files"); 
       } 
       } 
       else 
       Zip.AddFile(path, "Files"); 
     } 

     } 

    Zip.Save(outputstream); 
    } 
    outputstream.Position = 0; 
    return File(outputstream, "applicatoin/zip", "Download.zip"); 
+0

[HashSet](https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx)、[SortedSet](https://msdn.microsoft .com/en-us/library/dd412070(v = vs.110).aspx)(注文を保存する必要がある場合)、[Dictionary](https://msdn.microsoft.com/en-us/library/ xfhwa508(v = vs.110).aspx)(関連付けられたオブジェクトを保持する必要がある場合)または[SortedDictionary](https://msdn.microsoft.com/en-us/library/f7fta44c(v=vs.110) .aspx)(オブジェクトで順序付けられます)。 –

+0

あなたはいくつかの助けのコードでこの問題を解決する方法を教えてください。 –

+0

実際には、私はあなたが 'DotNetZip Library'を使っていることを知りました。あなたが' ContainsEntry'メソッドを見て、ファイルを追加する前にZipFileにファイルが存在するかどうかを調べることができました。 –

答えて

1

、あなたがContainsEntryメソッドを使用する必要がありますファイルを追加する前にファイルが存在するかどうかを確認します。

+0

ありがとうございました.... –