我正在尝试将一些 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
所以我创建了两个 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; }
}
而且我有一个List<A>
要查询的对象。它是从数据库中填充的,因此列表中的每个 A 都有一个带有 B 负载的子列表。我想使用 Linq-to-objects 来查询这个列表。
所以我需要使用 Linq 来获取 A 开始和完成其子 B 之间的平均时间,以及每个 B 开始和完成之间的平均时间。我没有编写原始 SQL,所以我不完全确定它是否能完成它应该做的事情!
我有几个这样的平均值要计算,所以我想在一个神奇的 Linq 查询中完成它们。这可能吗?