如何在 C# 中删除 Zip 中的重复值
How To Remove Duplicate Values From Zip in c#
我有多个文件夹,其中包含我要下载的相同文件。在第一次 foreach
循环中,我添加了一个目录,如果任何目录有重复文件,我可以通过从 List<>
中删除重复值来处理,但是第二次执行 foreach
循环时,另一个包含已添加到 zip 中的相同文件的文件夹已添加到 Zip 中,我不得不面对该 zip 包含重复值...
有什么方法可以从 zip 中删除重复值...
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");
使用 DotNetZip 库,您应该使用 ContainsEntry
方法在添加文件之前检查文件是否存在。
我有多个文件夹,其中包含我要下载的相同文件。在第一次 foreach
循环中,我添加了一个目录,如果任何目录有重复文件,我可以通过从 List<>
中删除重复值来处理,但是第二次执行 foreach
循环时,另一个包含已添加到 zip 中的相同文件的文件夹已添加到 Zip 中,我不得不面对该 zip 包含重复值...
有什么方法可以从 zip 中删除重复值...
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");
使用 DotNetZip 库,您应该使用 ContainsEntry
方法在添加文件之前检查文件是否存在。