c# - 创建由数据库驱动的对象来填充 TreeView - 非常慢

标签 c# dictionary object clone icloneable

我有一个从数据库读取表的应用程序。

我发出一个 SQL 查询来获取结果集,基于从结果中收集的唯一字符串值,我使用 case/switch 语句生成某些对象(它们继承了 TreeNode BTW)。这些创建的对象被分流到一个 Dictionary 对象中以供稍后使用。

在生成这些对象时,我使用结果集中的一些值通过 setter 填充对象中的值。

我查询字典以返回特定的对象类型并使用它来填充 TreeView 。但是,不可能从 Dictionary 对象填充 TreeView 中的 2 个相同类型的对象(您会收到运行时错误 - 目前我没有注意到,与引用同一对象有关)。所以我要做的就是使用 memberwiseClone 并实现 IClonable 来解决这个问题。

我这样做对吗?有没有更好的方法 - 因为我认为这导致我的程序此时非常慢。至少我认为它有点笨拙 - 来自比我了解更多的人的任何建议 - 非常感谢。

最佳答案

您使用外部词典有什么原因吗?我会在查询数据时直接填充树。

如果您确实需要字典,您可以设置树节点的 .Tag 属性以指向字典中的数据。

关于c# - 创建由数据库驱动的对象来填充 TreeView - 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56224/

相关文章:

javascript - 当我在 Javascript 中使用原型(prototype)向一个对象添加数组时,该对象的所有实例就像它们共享一个数组一样

javascript - 访问对象内部的数组

c# - 在 LINQ 中,orderby() 是只执行一次比较函数还是在需要时执行它?

python - 在python中合并两个具有相同键的列表字典

php - 如何在 openstreetmap 中从 map 外部打开标记?

python - 不区分大小写的全名字典搜索

javascript - 为嵌套 json 运行 for every 循环

c# - 通过使用每个数字一次 0-9 可以形成的任何 (2) 个数字的最小差异是多少?

c# - 我认为我误解了 Unity3d 的层次结构系统

c# - 尝试在 Unity 中围绕玩家生成一圈敌人