ダウンロードしたい同じファイルを複数のフォルダに持っています。最初に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");
[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)(オブジェクトで順序付けられます)。 –
あなたはいくつかの助けのコードでこの問題を解決する方法を教えてください。 –
実際には、私はあなたが 'DotNetZip Library'を使っていることを知りました。あなたが' ContainsEntry'メソッドを見て、ファイルを追加する前にZipFileにファイルが存在するかどうかを調べることができました。 –