集合中取出列名相同的,并把其他列的值合并成数组

需求:有这样一个集合
List<User> lst = new List<User>{
new User{ name="zhangsan",YFYE=2.1D,XFSJ=4.2D },
new User{ name="zhangsan",YFYE=2.2D,XFSJ=4.3D },
new User{ name="zhangsan",YFYE=2.3D,XFSJ=4.4D },
new User{ name="lisi",YFYE=2.2D,XFSJ=4.3D },
new User{ name="lisi",YFYE=2.3D,XFSJ=4.4D },
new User{ name="lisi",YFYE=2.4D,XFSJ=4.5D },
new User{ name="lisi",YFYE=2.5D,XFSJ=4.6D }
};

把name相同的数据的YFYE的字段拼成一个数组。然后转成Json
例如:{“name”:”zhangsan”,”datas”:[2.1,2.2,2.3]}
代码如下:

        public static void Test()
        {
            List<User> lst = new List<User>{
                            new User{ name="zhangsan",YFYE=2.1D,XFSJ=4.2D },
                            new User{ name="zhangsan",YFYE=2.2D,XFSJ=4.3D },
                            new User{ name="zhangsan",YFYE=2.3D,XFSJ=4.4D },
                            new User{ name="lisi",YFYE=2.2D,XFSJ=4.3D },
                            new User{ name="lisi",YFYE=2.3D,XFSJ=4.4D },
                            new User{ name="lisi",YFYE=2.4D,XFSJ=4.5D },
                            new User{ name="lisi",YFYE=2.5D,XFSJ=4.6D }
                           };

            List<NewModel> lstNewModel = new List<NewModel>();

            //这里可能有简单的方法,我没研究过
            List<User> lstFirst = null;
            //取出name种类
            var query = from newlist in lst group newlist by newlist.name into g select g;
            //分组的数量
            var iCount = query.Count();

            foreach (var item in query)
            {
                lstFirst = new List<User>();
                //每个集合的长度
                for (int i = 0; i < lst.Count; i++)
                    if (lst[i].name == item.Key)
                        lstFirst.Add(lst[i]);
                NewModel model = new NewModel();
                model.name = item.Key;
                //把得到的全部放到数组中
                var data=new double[lstFirst.Count];
                for (int i = 0; i < lstFirst.Count; i++)
                {
                    data[i] = lstFirst[i].YFYE;
                }
                model.datas = data;
                //当前数据已获取
                lstNewModel.Add(model);
            }
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            Console.WriteLine(serializer.Serialize(lstNewModel));
        }

测试结果如下:
这里写图片描述

欢迎加入技术交流群(169767436)这里有各种大神共同帮你解决问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值