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

LINQ 分组求和(最小时间,最大时间差)
首先有两个类 
order
{
string 名称
string id
list<item> items


item
{
datatime 开始时间
datatime 结束时间
}

求 每个order中 item的 最小开始时间 和最大开始时间的 差 的 总和 ,按 order.名称 分组

list<order> orders= //查询

var linq = from i in orders
  group i by i.名称 into S
  select new 
  {
  S.key,
  S.getCount(),
  Sumt=S.sun(x=>(x.items.select(y=>y.结束时间).Max()-x.items.select(y=>y.开始时间).min()).Totalminutes)
  }


这样是可以查到正常的结果的,问题是当 开始时间>结束时间的问题 会抛出异常。如果先用for循环 算出结果存在一个属性中再分组就不会异常。

有别的解决办法吗???我想一条LINQ语句查出来。


------解决方案--------------------
Sumt=S.Sum(x=>(
x.items.Max(y=>y.结束时间)>x.items.Min(y=>y.开始时间)
?x.items.Max(y=>y.结束时间)-x.items.Min(y=>y.开始时间)
:x.items.Min(y=>y.开始时间)-x.items.Max(y=>y.结束时间)).Totalminutes
)