using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using System.Globalization;
///
/// TreeView 的摘要描述
///
public class TreeView
{
public TreeView()
{
//
// TODO: 在這裡新增建構函式邏輯
//
}
public class TreeItem
{
public int num { get; set; }
public string kind { get; set; }
public int? root { get; set; }
public int? range { get; set; }
public List Children { get; set; }
public int Level { get; set; }
}
public List get_data(List data, int root, int level)
{
var resData = new List();
var query = data.Where(x => x.root == root).Select(x => new TreeItem
{
kind = x.kind,
num = x.num,
root = x.root,
range = x.range,
}).ToList();
if (query.Any())
{
level++;
query.ForEach(x => {
x.Children = get_data(data, x.num, level);
x.Level = level;
resData.Add(x);
});
}
return resData;
}
public List get_data2(List data, int root, int level, List resData=null)
{
if (resData == null)
{
resData = new List();
}
var query = data.Where(x => x.root == root).Select(x => new TreeItem
{
kind = x.kind,
num = x.num,
root = x.root,
range = x.range,
}).ToList();
if (query.Any())
{
level++;
query.ForEach(x => {
resData.Add(x);
if ( data.Where(s => s.root == x.num).Count() > 0)
{
get_data2(data, x.num, level, resData);
}
x.Level = level;
});
}
return resData;
}
public List subKinds(List data, int root, List resData = null)
{
if (resData == null)
{
resData = new List();
}
var query = data.Where(x => x.root == root).Select(x => new TreeItem
{
num = x.num,
root = x.root,
}).ToList();
if (query.Any())
{
query.ForEach(x => {
resData.Add(x.num);
subKinds(data, x.num, resData);
});
}
return resData;
}
public string kindText(List data, int? num)
{
string txt = "";
if (num.HasValue)
{
var query = data.Where(x => x.num == num.Value).Select(x => new TreeItem
{
kind = x.kind,
num = x.num,
root = x.root,
}).FirstOrDefault();
if (query != null)
{
if(query.root > 0)
{
txt = kindText(data, query.root) + "/"+ query.kind;
}
else
{
txt = query.kind;
}
}
}
return txt;
}
public string RptDash(int count)
{
string txt = "";
if(count == 1)
{
return "";
}
else
{
txt ="-" + RptDash(count-1);
}
return txt;
}
}