【发布时间】:2017-01-18 05:19:49
【问题描述】:
我正在尝试从 .csv 文件构建层次结构,它由字符串中的 ID(功能位置)、描述和父 ID(SupFunctLoc)组成。我已将数据提取到列表中。 代码和数据示例供参考。
Functional Loc. Description SupFunctLoc.
70003 ABC AS002
70C2 ABC 70003
70C2.01 ABC 70C2
70C2.01.02 ABC 70C2.01
70C2.01.02.10 ABC 70C2.01.02
70C2.01.02.10-BG010 ABC 70C2.01.02.10
示例代码:
static void Main(string[] args)
{
List<Input> inputList = new List<Input>();
var yourData = File.ReadAllLines(locate)
.Skip(1)
.Select(x => x.Split(','))
.Select(x => new Input()
{
FunctionalLocation = x[0],
Description = x[1],
SuppFunctionalLocation = x[2],
});
//try 3
//try 2
var outputList = yourData
.Where(i => i.SuppFunctionalLocation!= null) // Just get the parents
.Select(i => new Input()
{
Description = i.Description,
SuppFunctionalLocation = i.SuppFunctionalLocation,
Children = inputList
.Where(x => x.FunctionalLocation.ToString() == i.SuppFunctionalLocation.ToString())
.Select(x => new Input()
{
Description = x.Description,
SuppFunctionalLocation = x.SuppFunctionalLocation,
FunctionalLocation = x.FunctionalLocation,
}).ToList()
}).ToList();
foreach (var output in outputList)
{
Console.WriteLine(output.Description);
output.Children.ForEach(c => Console.WriteLine($"\t {c.Description}"));
}
}
输入的类定义
class Input
{
public string FunctionalLocation { get; set; }
public string Description { get; set; }
public string SuppFunctionalLocation { get; set; }
public List<Input> Children { get; set; }
}
请帮助在这种情况下可以做些什么。感谢您的帮助。
【问题讨论】:
-
您正在拆分
,,但您的示例文本没有逗号。此外,您需要为Input提供类def。 -
@Enigmativity 你好我已经粘贴了一个数据样本并使用类输入定义更新了问题
-
Functional Loc.是主键吗? -
foreach (var item in collection) item.Children = collection.Where( c => c.ParentId == item.Id ).ToList();
-
还有:为什么我有一个孩子的名单?据我所知,总是只有一个 supfunc...