c# - 为公司树选择正确的数据结构

标签 c# .net

我在为工作中的一个问题确定正确的数据结构时遇到了一个小问题。我要做的是创建一个“公司结构树”。简而言之 - 某人是所有老板中的老板(所以他是树的第一层(或零层))然后是其他 worker ,但如你所知,某人可以是其他人的老板等。树必须最多深入 5 个级别。我真的不知道如何创建它,即使从数据库的角度来看也是如此。

我已经尝试过自定义 ViewModel 和一些字典,但我觉得有一种可行的方法,不包括 5 级嵌套字典或列表。

如果有人知道如何执行此操作,我们将不胜感激。

干杯。

最佳答案

我建议您在 Employees 表上使用自引用外键

Employees

| ID    | Name  | ManagerID |
|-------|-------|-----------|
| 1     | Tom   | NULL      |
| 2     | Andy  | 1         |
| 3     | Heidi | 2         |

其中 ManagerID 是 ID 上的外键。

优点:

  • 您不限于 5 个级别
  • 你可以有多个根条目
  • 此原则也适用于其他自引用结构,如菜单树等。
  • 易于扩展,如果您需要 n:n 连接,您可以进行非规范化(每个字段 1;2 只需分号分隔的 ManagerID)或使用自己的交叉表进行规范化。

关于c# - 为公司树选择正确的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35147713/

相关文章:

c# - .NET DateTime & TimezoneInfo.ConvertTime 派对

c# - Selenium:有没有办法在整个页面中搜索给定的关键字?

c# - 在网站中运行时如何访问类库中的内容

java - iText:从 HTML 创建短语

c# - 类不继承自对象?

.net - 具有多个身份验证过滤器的 ASP.net Web API 2 Controller

c# - FormsAuthentication.Decrypt 始终在其中一个 Web 服务器中返回 null

c# - 文本框的 wpf LostFocus 事件

c# - MEF CachedAssemblyCatalog - 程序集的延迟加载

.net - SQL 查询将文本数据存储在 Varbinary(max) 中