c# - LINQ 平均时间跨度?

标签 c# asp.net linq linq-to-sql datetime

我有一个数据库表,其中包含事件开始时间和结束时间的条目。我想获取这些条目并找到事件的平均长度。减法没问题。但是,当我尝试获取平均值时,编译器会报错。

这是我当前的 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();
    }

关于c# - LINQ 平均时间跨度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086087/

相关文章:

c# - 使用 C# 从特定目录中删除文件应该使用哪个库?

c# - 如何将 XElement 插入现有的 xml 文件中?

c# - 响应由 JavaScript 完成的 TextBox 更改

javascript - 使用js脚本后无法提交html表单

asp.net - NLog.config复制到根目录和bin目录

asp.net - 在 ASP.NET 文本框中捕获按键

linq - Linq where 子句中的 if 语句

c# - 从 LINQ 查询返回多个流

c# - 将多行插入 MS SQL Server 并检索所有新表 ID 的背面

c# - 如何在ios中永远运行后台服务以同步数据