日期:2014-05-20  浏览次数:21273 次

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的时候,发现无法进行聚合,原因是类型 不是 数字类型,
你看下哪里出错的,针对对应的,进行下类型转换