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
)