0
我正在嘗試編寫一個查詢,它將返回在售票系統中工作所花費的平均時間。 每個工作都有多個時間日誌,所以我需要按SO編號進行分組,然後以某種方式獲得所有結果的平均值。LINQ如何顯示GroupBy中所有結果的平均值
當前查詢返回每個服務訂單的列表以及花費在作業上的總分鐘數。
我該如何讓每個工作所花的平均分鐘數?
from so in TblServiceOrders
from sologs in TblSOLogs.Where(x => x.SONumber == so.SONumber).DefaultIfEmpty()
where so.DateClosed >= new DateTime(2013,07,01)
where so.DateClosed <= new DateTime(2013,07,02)
where sologs.ElapsedHours != 0 || sologs.ElapsedMinutes != 0
group new { sologs.ElapsedHours, sologs.ElapsedMinutes } by so into g
select new {
g.Key.SONumber,
elapsed = g.Average (x => (x.ElapsedHours == null ? 0 : x.ElapsedHours * 60) + (x.ElapsedMinutes == null ? 0 : x.ElapsedMinutes))
}
== ==編輯
這看起來是越來越接近,但它給我每次記錄的平均,而不是總時間日誌的平均值在每個左右。
請幫忙?
from so in TblServiceOrders
join sologs in TblSOLogs on so.SONumber equals sologs.SONumber
where so.DateClosed >= new DateTime(2013,07,01)
where so.DateClosed <= new DateTime(2013,07,03)
where sologs.ElapsedHours != 0 || sologs.ElapsedMinutes != 0
group sologs.SONumber by sologs into g
group new {g.Key.ElapsedHours, g.Key.ElapsedMinutes} by "Total" into t
select t.Average (x => (x.ElapsedHours == null ? 0 : x.ElapsedHours * 60) + (x.ElapsedMinutes == null ? 0 : x.ElapsedMinutes))
顯示的查詢不會編譯,是嗎?您通過ElapsesHours和ElapsedMinutes進行分組,然後使用Key.SoNumber ...您應該按照SoNumber進行分組,不需要? –
此查詢是否應該在數據庫或內存集合上工作?因爲如果它應該在數據庫上工作,那麼它就有很大的問題。 – Cosmin
它應該在數據庫上運行,它運行正常,它只是返回每個SO與總數。該查詢不應該工作,這是我在努力獲得結果的地方。 –