【发布时间】:2021-08-17 16:05:19
【问题描述】:
我有以下数据集
每个城市属于特定的部门,属于特定的区域,属于特定的国家(在这种情况下只有一个国家:法国)。
此数据包含在一个 CSV 文件中,我可以逐行读取该文件,但我的目标是将这些数据转换为树结构(以法国为根)。
这些节点中的每一个都会被赋予一个特定的 Id 值,这是我已经做过的事情,但棘手的部分是这里的每个节点还必须包含一个 ParentId(例如 Belley 和 Gex 需要 ParentId 的Ain,但 Moulins 和 Vichy 需要 Aller 的 ParentId)。
下面是我编写的一段代码,它为该数据集中的每个名称以及其他一些值分配了一个 Id 值:
int id = 0;
List<CoverageAreaLevel> coverageAreas = GetCoverageAreaDataFromCsv(path, true);
List<LevelList> levelLists = new List<LevelList>
{
new LevelList { Names = coverageAreas.Select(a => a.Level1).Distinct().ToList(), Level = "1" },
new LevelList { Names = coverageAreas.Select(a => a.Level2).Distinct().ToList(), Level = "2" },
new LevelList { Names = coverageAreas.Select(a => a.Level3).Distinct().ToList(), Level = "3" },
new LevelList { Names = coverageAreas.Select(a => a.Level4).Distinct().ToList(), Level = "4" }
};
List<CoverageArea> newCoverageAreas = new List<CoverageArea>();
foreach (LevelList levelList in levelLists)
{
foreach (string name in levelList.Names)
{
CoverageArea coverageArea = new CoverageArea
{
Id = id++.ToString(),
Description = name,
FullDescription = name,
Level = levelList.Level
};
newCoverageAreas.Add(coverageArea);
}
}
levelLists 变量包含我正在寻找的数据的某种层次结构,但该列表中的所有项目都没有通过任何东西链接在一起。
知道如何实现吗?我可以手动找出每个 ParentId,但我想自动化这个过程,特别是如果将来需要这样做。
【问题讨论】:
-
这听起来像是一个数据库结构问题,而不是 C# 问题。为了阐明您尝试做什么,请编辑您的问题并添加您的代码段,以展示您自己解决此问题的最佳尝试,然后解释您在该代码中的哪个位置没有得到您期望的结果。这将有助于我们更好地了解您的方法,并更加关注您的问题。
-
@devlincarnate 在这里根本不正确,并得出了一些重大结论
-
@JᴀʏMᴇᴇ:要求澄清是草率下结论? :D 而不仅仅是任何结论......大量的结论。 8D
标签: c# .net data-structures tree