1、Controller
[HttpGet]
public IActionResult GetTreeNode()
{
var tree = _dictionaryRepo.GetTreeNode();
string jsonTree = JsonConvert.SerializeObject(tree, Formatting.Indented);
return Ok(new
{
code = 200,
data = tree,
message = ""
});
}
2、Repository
public List<DictionaryTreeVo> GetTreeNode()
{
List<DictionaryTreeVo> tree = new List<DictionaryTreeVo>();
var list = Context.Dictionary.AsQueryable().AsNoTracking();
foreach (var item in list.ToList().Where(x => x.parent_id == 0))
{
var model = _mapper.Map<DictionaryTreeVo>(item);
GetNodes(_mapper.Map<List<DictionaryTreeVo>>(list.ToList()), model);
tree.Add(model);
}
return tree;
}
static void GetNodes(List<DictionaryTreeVo> all, DictionaryTreeVo current)
{
var subItems = all.Where(x => x.parent_id == current.id).ToList();
current.children = new List<DictionaryVo>();
current.children.AddRange(subItems);
foreach (var subItem in subItems)
{
GetNodes(all, subItem);
}
}
2、Model
public class DictionaryVo
{
public int id { get; set; }
public int parent_id { get; set; }
public string disease_code { get; set; }
public string label { get; set; }
public string value { get; set; }
public bool disabled { get; set; }
public int? sort { get; set; }
public string description { get; set; }
}
public class DictionaryTreeVo : DictionaryVo
{
public List<DictionaryVo> children { get; set; }
}
*