原创

c# linq 多组group以及sum

由于最近在做c#,然后取数据的话是通过socket协议取的,数据格式唯一,不能自己写sql,数据不可控。
想进行分组和求和,只能通过linq来进行类似于sql的操作,linq是c#中自带的方法,所以不需要引用其他东西,可以直接使用

dbEntityList是我从协议中获取的数据的list,里面是对象
group by 和sum如下:

var query = from c in dbEntityList
group c by new
{
c.fequkey,
c.fmonth
}
into s
select new
{
fmonth = s.Select(m => m.fmonth),
fequkey = s.Select(m => m.fequkey),
fcount = s.Sum(p => long.Parse(p.fcount))

};

此处就完成了分组和求和,再重新添加到一个对象的集合里,如下:

  List<DbEntity> dbEntityListNew = new List<DbEntity>();
            for (int i = 0; i < query.ToList().Count; i++)
            {

                //IEnumerable<string> aa = query.ToList()[i].fmonth;
                //string bb = aa.First();
                DbEntity dbEntity = new DbEntity();
                dbEntity.fmonth = query.ToList()[i].fmonth.First();
                dbEntity.fequkey = query.ToList()[i].fequkey.First();
                dbEntity.fcount = query.ToList()[i].fcount + "";
                dbEntityListNew.Add(dbEntity);
            }
正文到此结束
本文目录