[英]LINQ Average TimeSpan?
我有一個數據庫表,其中包含事件的開始時間和結束時間的條目。 我想拿這些條目,找到一個事件的平均長度。 減法沒問題。 但是,當我試圖獲得平均值時,編譯器會抱怨。
這是我當前的LINQ查詢:
public TimeSpan? getAverageTime()
{
return (from EventTime in db.EventTimes
where EventTime.EventTimesID > 0
select (EventTime.TimeEnd - EventTime.TimeStart)).Average();
}
我也試過.Sum()和.Aggregate()這樣我就可以有一些東西可以使用,但沒有一個被接受。
實現目標的最佳方法是什么?
看來你必須在linq2sql語句中使用SqlMethods.DateDiff(如果是SQL,則使用DATEDIFF函數):
public int getAverageTime()
{
return (from EventTime in db.EventTimes
where EventTime.EventTimesID > 0
select (SqlMethods.DateDiffMinute(EventTime.TimeStart, EventTime.TimeEnd)).Average();
}
Average
不適用於TimeSpan
值,這是您減去兩個DateTime
值時得到的值。 嘗試平均(EventTime.TimeEnd - EventTime.TimeStart).TotalMilliseconds
然后將其轉換回TimeSpan。
var avg=(from t in array select (t.endtime.Ticks-t-starttime.Ticks)).Average();
Console.Write(new DateTime((long)avg).TimeOfDay);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.