簡體   English   中英

LINQ平均時間跨度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM