模式一:
现有一表FactoryModel,对应的实体类如下:
public class FactoryModel
{
public string Id {
get; set; }
public string Name {
get; set; }
public string Code {
get; set; }
public string ParentId {
get; set; }
}
现用C#构造对应的树结构方法示例:
1.新建个FactoryModelTree实体类
public class FactoryModelTree
{
public string Id {
get; set; }
public string Name {
get; set; }
public string Code {
get; set; }
public string ParentId {
get; set; }
public List<FactoryModelTree> Childs {
get; set; } = new List<FactoryModelTree>();
}
2.写出获取Tree的方法
public class FactoryModelHelper
{
public List<FactoryModelTree> GetTree(List<FactoryModel> factoryModels)
{
var trees = new List<FactoryModelTree>();
// 首先顶级父节点
var topParents = factoryModels.Where(i => string.IsNullOrEmpty(i.ParentId)).ToList();
foreach (var parent in topParents)
{
var tree = new FactoryModelTree();
tree.Id = parent.Id;
tree.Name = parent.Name;
tree.Code = parent.Code;
tree.ParentId = null;
trees.Add(tree);
BuildTree(factoryModels, tree);
}
return trees;
}
private void BuildTree(List<FactoryModel> factoryModels, FactoryModelTree parentNode)
{