【发布时间】:2020-07-21 21:59:40
【问题描述】:
我正在尝试在服务器的路径名字符串列表中查找重复项: 我的路径看起来像
\\UTIR\STORAGE\10-23-2015\DEPOSITS\123_DEPOSIT_10-23-2015_1.pdf我将不得不检查其中的 50 个,我需要检查路径的结尾\123_DEPOSIT_10-23-2015_1.pdf以确保没有重复。
List<string> manypaths = (List<string>)TempData["temp"];
var list= new List<string>();
foreach (var item in manypaths)
{
if(list.Contains(item))
{
}
else
{
list.Add(item);
}
}
我正在使用 dotnetzip 库,并且尝试过 ContainsEntry、Contains。以及我在网上找到的所有其他内容。当我将这些文件添加到 zip 文件中时,我收到一个错误:
System.ArgumentException: '已添加具有相同键的项。
using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile())
{
zip.AddFiles(list, @"\");
MemoryStream output = new MemoryStream();
zip.Save(output);
return File(output.ToArray(), "application/zip");
}
【问题讨论】:
-
为什么要检查路径的最后一个?整个路径不重复?
-
@Sajid 当有重复时它会抛出一个错误。根据文件的不同,路径的最后部分前面可能有不同的名称。但是如果最后一部分是相同的,它将通过那个重复的错误。所以我的想法是抓住路径的最后一部分,然后在将其添加到我的 zip 文件时检查是否有重复项。
-
对于此数据,
HashSet可能比List更好。
标签: c# asp.net-mvc linq dotnetzip