我正在使用FileSystemWatcher类来监视文件夹并在事件发生时更新列表.我正在使用以下类来保存每个文件的信息:
public class FileItem
{
public string Name { get; set; }
public string Path { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以下列表包含该信息的集合:
public static List<FileItem> folder = new List<FileItem>();
Run Code Online (Sandbox Code Playgroud)
我在列表中添加了一些FileItem对象.但是,要删除具有匹配名称的特定项,我不能只使用foreach()循环,因为枚举更改,并且一旦删除文件,我就会得到一个异常.因此,我添加了一个中断(因为只有一个具有相同名称的文件)在项目被删除后突破foreach()循环...但我不确定它是否是最有效的方法它.有更简单,更合适的方式吗?这是我删除的代码:
private static void OnChanged(object source, FileSystemArgs e)
{
if (e.ChangeType == WatcherChangeTypes.Deleted)
{
foreach (var item in folder)
{
if (item.Name == e.Name)
{
folder.Remove(item);
folder.TrimExcess();
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以通过linq填充它,然后从列表中删除它来删除任何项目
List<FileItem> folder = new List<FileItem>();
folder.Remove(folder.SingleOrDefault(x=>x.Name == "myname"));
folder.Remove(folder.SingleOrDefault(x => x.Path == "mypath"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1641 次 |
| 最近记录: |