现在 有一个 无限级 的分类 列表, 有什么好的 解决方案 可以 使 添加 和查询 都好用。 一开始 是 用 id,name, parentId, 这种方式,但是 这种 继承 在查询 子元素列表 和 父元素 列表 时 很麻烦,需要递归 。。 求靠谱的方案
现在 要做的 是一个文件夹的功能,如果需要把 这个 文件夹 分享出去, 需要 把 文件夹 以及 它下面的 子结构 关系 复制 一份 给 新的用户
加一个 code 字段,
如
1级是 01
2级就是 0101
3级就是 010101
这样 查不了 某个分类下的 所有 子元素
@元点之始: 你都不仔细看回答。
@元点之始: 或者参考IPv4协议,划分子网的办法。
@长蘑菇星人: 现在 要做的 是一个文件夹的功能,如果需要把 这个 文件夹 分享出去, 需要 把 文件夹 以及 它下面的 子结构 关系 复制 一份 给 新的用户
@元点之始: 数据就是数据,和你分不分享没关系,用户又不知道你是不是真的拷贝给他一份,或者只是给了一个引用。
@长蘑菇星人:
弄一个叫Code或者Level啥的字段,存储从根开始到当前节点的路径,如:
“12-345-7890”
这样 查不了 某个分类下的 所有 子元素
以上两个的答案,需要查询的时候
Select * from TreeTable where Code like '01%' 这样就是所有01的子树了。
现在 要做的 是一个文件夹的功能,如果需要把 这个 文件夹 分享出去, 需要 把 文件夹 以及 它下面的 子结构 关系 复制 一份 给 新的用户
我之前的做法是再做一个表. 父节点id,子节点id. 当主表发生变化时.把所有的的下级都生成一个放到这张表里.
就可以查找某个节点的所有父节点.和某个节点的所有子节点.
最简单的表述方式就是递归;目录在视图中还是需要这种结构。不要东想西想了,这玩意就是ParentId这样最简单进行数据存储描述,最终目录结构如下(转换也最方便):
class Control
{
public Control Parent{get;}
public Collection<Control> Children{get;}
}