linq分组汇总
var qrLocal = from h in
(from u in m_dataSvc.Entities.GdsPcjgqds
where u.JH == m_jh && u.JB == "0"
select new
{
JH=u.JH,
CW=u.CW,
NY=u.NY,
YCYL=u.YCYL,
HSYCYL=u.HSYCYL,
YCSL=u.YCSL
})
group h by new {h.JH, h.CW, h.NY } into g
select new
{
JH=g.Key.JH,
NY = g.Key.NY,
CW = g.Key.CW,
YCYL = g == null ? 0 : g.Sum(a => a.YCYL),
HSYCYL = g == null ? 0 : g.Sum(a => a.HSYCYL),
YCSL = g == null ? 0 : g.Sum(a => a.YCSL)
};
foreach (var sum in qrLocal)
{
DataRow row = table.NewRow();
row["JH"] = m_jh;
row["NY"] = sum.NY;
row["XC"] = sum.CW;
row["YCYL"] = sum.YCYL;
row["HSYCYL"] = sum.HSYCYL;
row["YCSL"] = sum.YCSL;
table.Rows.Add(row);
}
报错为无法比较类型为“System.Linq.IGrouping`2”的元素。仅支持基元类型(例如 Int32、String 和 Guid)和实体类型。
如何解决
------解决方案-------------------- where u.JH == m_jh && u.JB == "0"
这两个字段分别是什么类型
------解决方案--------------------
http://topic.csdn.net/u/20101111/09/ea049af5-d079-4a13-8c1d-e1a3350a830d.html
TIM 的这个帖子你看了没?里面有关于 linqpad 这个工具
学习和应用linq还比较容易上手的
另外看你这个错误提示,应该是你进行 sum的时候,发现无法进行聚合,原因是类型 不是 数字类型,
你看下哪里出错的,针对对应的,进行下类型转换