使用Linq生成分类Json数据

public   abstract   class  Category
        {
            
public   static   string  GetJson()
            {
                StringBuilder sb 
=   new  StringBuilder( 500 );
                var pr 
=   new  ParentCateRepository();
                var cr 
=   new  ChildCateRepository();
                var pList 
=  pr.GetAll().Select(a  =>   new  { a.ID, a.Name });
                var cList 
=  cr.GetAll().Select(a  =>   new  { a.ID, a.Name, a.ParentID });
                
foreach  (var a  in  pList)
                {
                    sb.Append(
" {id:' "   +  a.ID  +   " ',name:' "   +  a.Name  +   " ',child:[ " );
                    var c 
=  cList.Where(i =>  i.ParentID  ==  a.ID);
                    
foreach  (var b  in  c)
                    {
                        
if  (b.ParentID  ==  a.ID)
                        {
                            sb.Append(
" {id:' "   +  b.ID  +   " ',name:' "   +  b.Name  +   " '} " );
                        }
                        
if  (b.ID  !=  c.Last().ID) // 注意一定要判断字段,不能判断对象因为两种类型是推测所以不同
                        {
                            sb.Append(
" , " );
                        }
                    }
                    sb.Append(
" ]} " );
                    
if  (a.ID  !=  pList.Last().ID)
                    {
                        sb.Append(
" , " );
                    }
                }
                
return   " [ " + sb.ToString() + " ] " ;
            }

生成的数据如下格式:
[{id:'1',name:'计算机',child:[{id:'1',name:'程序设计'}]},
{id:'2',name:'语言培训',child:[{id:'2',name:'英语培训'}]}]

转载于:https://www.cnblogs.com/newmin/archive/2009/08/04/1538789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值