linq递归把实体转换为树状输出,linq无限级分类递归

本文介绍了如何在项目中利用LINQ处理无限级分类数据,将其递归转换为适合jQuery EasyUI tree组件的JSON格式。通过创建递归实体并利用构造函数将数据库实体转化为所需的JSON结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目用到jQuery EasyUI的tree,由于JSON格式限制

所以要把LIST对象转换为适合tree的JSON格式

 [{

id:"",

text:"",

children:[]

},{

id:"",

text:"",

children:[]

}]

 

已经把全部分类加在出来了,现在要用LINQ进行递归

新建递推实体,构造函数里面把数据库实体传入,构造出生成JSON的实体

public class EasyUiTreeJson {
    public EasyUiTreeJson() { }
    public EasyUiTreeJson(Component.Entities.J_NewsCategory c) {
        id = c.ID;
        text = c.Name;
    }
    public EasyUiTreeJson(Component.Entities.J_NewsCategory c, List<Component.Entities.J_NewsCategory> list) {
        id = c.ID;
        text = c.Name;
        children = (from l in list where l.ParentId == c.ID select new EasyUiTreeJson(l,list)).ToList();//递归
    }
    public int id { get; set; }
    public string text { get; set; }
    public List<EasyUiTreeJson> children { get; set; }
}

 

调用:

int parentid = 0;
        List<Component.Entities.J_NewsCategory> cates = Ring.Helper.Reflect.DataTable2Entities<Component.Entities.J_NewsCategory>(Component.DataModule.J_NewsCategory.GetAllChildrenByParentId(parentid));//从数据库取出所有分类
        Component.Entities.J_NewsCategory c = new Component.Entities.J_NewsCategory() { ID = 0, Name = "顶级分类" };//新建tree顶级节点
        EasyUiTreeJson json = new EasyUiTreeJson(c, cates);//递归
        List<EasyUiTreeJson> listJson = new List<EasyUiTreeJson>();
        listJson.Add(json);
        ctx.Response.Write(Ring.Helper.JSON.Serialize<List<EasyUiTreeJson>>(listJson));//序列化成JSON
        ctx.Response.End();




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值