100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 记录转化为有层次结构的树状列表的通用算法

记录转化为有层次结构的树状列表的通用算法

时间:2022-09-23 16:08:03

相关推荐

记录转化为有层次结构的树状列表的通用算法

解决方法:

publicclassCollectionHelper

{

privatestaticArrayListFill(intpID,intlevel,ArrayListlist)

{

ArrayListreturnList=newArrayList();

foreach(objectobjinlist)

{

inttypePID=(int)ReflectionUtil.GetProperty(obj,"PID");

inttypeID=(int)ReflectionUtil.GetProperty(obj,"ID");

stringtypeName=ReflectionUtil.GetProperty(obj,"Name")asstring;

if(pID==typePID)

{

stringnewName=newstring('-',level*4)+typeName;

ReflectionUtil.SetProperty(obj,"Name",newName);

returnList.Add(obj);

returnList.AddRange(Fill(typeID,level+1,list));

}

}

returnreturnList;

}

///<summary>

///生成有层次结构的列表

///</summary>

///<paramname="list">具有Name,ID,PID成员的任何集合</param>

///<returns></returns>

publicstaticArrayListGetTreeItems(ArrayListlist)

{

returnFill(-1,0,list);

}

}

publicsealedclassReflectionUtil

{

privateReflectionUtil()

{}

publicstaticBindingFlagsbf=BindingFlags.DeclaredOnly|BindingFlags.Public|

BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.Static;

publicstaticvoidSetProperty(objectobj,stringname,objectvalue)

{

PropertyInfofi=obj.GetType().GetProperty(name,bf);

fi.SetValue(obj,value,null);

}

publicstaticobjectGetProperty(objectobj,stringname)

{

PropertyInfofi=obj.GetType().GetProperty(name,bf);

returnfi.GetValue(obj,null);

}

}

效果图如下

本文转自博客园伍华聪的博客,原文链接:记录转化为有层次结构的树状列表的通用算法,如需转载请自行联系原博主。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。