gpt4 book ai didi

c# - (嵌套)自定义对象列表中的列表

转载 作者:行者123 更新时间:2023-11-30 17:02:38 25 4
gpt4 key购买 nike

我有一个对象列表(实际上是一个 ObservableCollection)(在我创建的类中定义的类型对象),每个对象都有自己的对象列表。这是一个文件列表,每个文件都有一个文件列表。

设置存档的“已启用”属性后,我需要检查是否还没有另一个已启用且具有相同文件的存档。如果是这样,我需要做一些事情。

因此,如果我有(例如)1000 个文件并且我启​​用了一个文件,我必须搜索每个文件的文件列表(= 1000 个文件列表中的每个文件列表)以搜索匹配。

  1. 这是一个糟糕的实现吗?制作一个包含已启用存档文件的额外列表会更好吗?或者另一种更好的方法?

  2. 在存档类中定义列表并将其设为静态是个好主意还是我应该在使用列表的类中定义它(总是只有一个存档列表)

谢谢(新手在这里尝试通过实践学习)

最佳答案

连同您的 ObservableCollection<Archive> ,我可能会包含一个 HashSet<File>秒。 (File 将需要正确实现 GetHashCodeEquals)这将让您快速查看文件是否已存在于任何其他存档中。

IList<Archive> archives = new ObservableCollection<Archive>();
ISet<File> files = new HashSet<File>();

void OnArchiveEnabled(Archive archive)
{
foreach (var file in archive.Files)
{
if (!files.Add(file))
{
//file already exists, do some stuff
}
}
}

我省略了如何 OnArchiveEnabled被触发(可能 Archive.Files 属性是 ObservableCollection<File> ),并且在此实现中无法禁用存档。要禁用存档,您可以重新创建 files设置或更改 filesDictionary<File, IList<Archive>> (从文件到它们所在的已启用存档的字典)并稍微调整一下逻辑。

关于c# - (嵌套)自定义对象列表中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19547496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com