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