Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何按另一组的和进行分组?_C#_Linq - Fatal编程技术网

C# 如何按另一组的和进行分组?

C# 如何按另一组的和进行分组?,c#,linq,C#,Linq,我正在尝试做一个分组依据另一个分组依据的总和 在LINQ中这样做的正确方法是什么 下面的查询不起作用,但它旨在演示我要实现的逻辑 from so in TblServiceOrders join sologs in TblSOLogs on so.SONumber equals sologs.SONumber where so.DateClosed >= new DateTime(2014,01,17) where so.DateClosed <= new DateTime(20

我正在尝试做一个
分组依据
另一个
分组依据
的总和

在LINQ中这样做的正确方法是什么

下面的查询不起作用,但它旨在演示我要实现的逻辑

from so in TblServiceOrders
join sologs in TblSOLogs on so.SONumber equals sologs.SONumber

where so.DateClosed >= new DateTime(2014,01,17) 
where so.DateClosed <= new DateTime(2014,01,17)
where sologs.ElapsedHours != 0 || sologs.ElapsedMinutes != 0

group new {sologs.ElapsedHours, sologs.ElapsedMinutes} by sologs.SONumber into g
group new {g.Sum (x => x.ElapsedHours), g.Sum (x => x.ElapsedMinutes)} by "Totals" into t

select new {
AverageHours = t.Average (x => x.ElapsedHours)
AverageMins = t.Average (x => x.ElapsedMinutes)
}
TblServiceOrders中so的

在so.SONumber上的TblSOLogs中加入sologs。SONumber等于sologs.SONumber
其中so.DateClosed>=新日期时间(2014,01,17)
其中so.DateClosed x.ElapsedHours),g.Sum(x=>x.ElapsedMinutes)}由“总计”转换为t
选择新的{
AverageHours=t.平均值(x=>x.ElapsedHours)
AverageMins=t.平均值(x=>x.ElapsedMinutes)
}

下面的查询正在运行。现在下一个谜团是为什么我不能用它来填充VS中的DataGridView:-(

工作查询:

from so in TblServiceOrders
join sologs in TblSOLogs on so.SONumber equals sologs.SONumber

where so.DateClosed >= new DateTime(2014,01,17) 
where so.DateClosed <= new DateTime(2014,01,17)
where sologs.ElapsedHours != 0 || sologs.ElapsedMinutes != 0

group new {sologs.ElapsedHours, sologs.ElapsedMinutes} by sologs.SONumber into g
group new {hours = g.Sum (x => x.ElapsedHours), mins = g.Sum (x => x.ElapsedMinutes)} by "Totals" into t

select new {
Average = t.Average (x => (x.hours * 60) + x.mins),
Count = t.Count ()
}

可能重复的不重复,不同的范围,不同的问题。
hours = g.Sum (x => x.ElapsedHours), mins = g.Sum (x => x.ElapsedMinutes)