c# - 重复文件显示在 WPF 文件夹的列表框中
问题描述
我有一个问题,如果我从文件夹(gedaan)中获取我的文件,它会重复并将文件夹中的文件放在我的列表框 agian 中。
我只是想让它检查我的文件夹中是否有新文件
这是我从文件夹中获取文件的代码
DirectoryInfo dinfo = new
DirectoryInfo(@"C:\Users\nour\Desktop\Gedaan");
FileInfo[] Files = dinfo.GetFiles("*.DOCX");
foreach (FileInfo file in Files)
{
LB2.Items.Add(file.Name);
}
解决方案
这是因为您要再次添加所有文件。
您必须在再次添加所有文件之前清除您的收藏:
DirectoryInfo dinfo = new
DirectoryInfo(@"C:\Users\nour\Desktop\Gedaan");
FileInfo[] Files = dinfo.GetFiles("*.DOCX");
LB2.Items.Clear();
foreach (FileInfo file in Files)
{
LB2.Items.Add(file.Name);
}
或者您必须排除重复文件:
DirectoryInfo dinfo = new
DirectoryInfo(@"C:\Users\nour\Desktop\Gedaan");
IEnumerable<FileInfo> Files = dinfo.GetFiles("*.DOCX").Where(file => !LB2.Items.Contains(file.Name));
foreach (FileInfo file in Files)
{
LB2.Items.Add(file.Name);
}
另一种方法是将 type 更改为LB2.Items
type HashSet<string>
。HashSet<T>
is 是一个不包含重复元素的集合。在此处阅读更多信息:https ://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1
推荐阅读
- java - 使用 Java ee 从对象列表中创建具有 JsonArray 的 JsonObject
- html - 已解决:RSelenium 错误 - com.google.common.collect.Maps$TransformedEntriesMap 与 java.lang.CharSequence 不兼容
- python - 从控制台或 console.cloud.google.com/functions/edit 部署 Python GCP Cloud Function 时出现 INVALID_ARGUMENT 错误
- c++ - 如果可能,在堆栈内存中创建指向映射的指针数组
- docker - Docker 错误的时间
- java - 销毁 ViewPager
- javascript - 需要解释这种特殊的古怪异步行为
- javascript - javascript 中等效的 Java CometD Jetty 协议
- css - 在 Grid 项目 Material UI 中将图像与中心对齐
- accessibility - 盲人需要多长时间才能学会使用电脑?