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

来源:互联网 发布:炫酷团队网站源码 编辑:程序博客网 时间:2024/04/29 10:09

需求:有这样一个集合
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)这里有各种大神共同帮你解决问题。

1 0