相关疑难解决方法(0)

Linq - 在一个查询中计算多个平均值

我正在尝试将一些SQL查询转换为Linq,以避免多次访问数据库.

我正在尝试转换的旧SQL:

SELECT
    AVG(CAST(DATEDIFF(ms, A.CreatedDate, B.CompletedDate) AS decimal(15,4))),
    AVG(CAST(DATEDIFF(ms, B.CreatedDate, B.CompletedDate) AS decimal(15,4)))
FROM
    dbo.A
INNER JOIN
    dbo.B ON B.ParentId = A.Id
Run Code Online (Sandbox Code Playgroud)

所以我创建了两个C#类:

class B
{
    public Guid Id { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime CompletedDate { get; set; }
}

class A
{
    public Guid Id { get; set; }
    public DateTime CreatedDate { get; set; }
    public List<B> BList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个List<A>我想查询的对象.它是从数据库填充的,因此列表中的每个A都有一个负载为Bs的子列表.我想使用Linq-to-objects来查询此列表.

所以我需要使用Linq来获得A开始和孩子Bs完成之间的平均时间,以及每个B开始和完成之间的平均时间.我没有写原始的SQL所以我不完全确定它做了它应该做的!

我有几个这些平均值要计算,所以我想在一个神奇的Linq查询中完成它们.这可能吗?

c# sql linq average aggregates

5
推荐指数
1
解决办法
6709
查看次数

标签 统计

aggregates ×1

average ×1

c# ×1

linq ×1

sql ×1