Linq - calcular promedios múltiples en una consulta

Estoy tratando de convertir algunas consultas SQL en Linq para evitar múltiples viajes a la base de datos.

El viejo SQL que estoy tratando de convertir hace:

<code>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
</code>

Así que he creado dos clases de C #:

<code>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; }
}
</code>

Y tengo unList<A> Objeto que quiero consultar. Se rellena desde la base de datos, por lo que cada A en la lista tiene una sub-lista con una carga de Bs. Quiero usar Linq-to-objects para consultar esta lista.

Así que necesito usar Linq para obtener el tiempo promedio entre el inicio de una A y la finalización de sus B hijo, y el tiempo promedio entre el inicio y la finalización de cada B. ¡No escribí el SQL original, así que no estoy completamente seguro de que haga lo que se supone que debe hacer!

Tengo varios de estos promedios para calcular, así que me gustaría hacerlos todos dentro de una consulta mágica de Linq. es posible?

Respuestas a la pregunta(3)

Su respuesta a la pregunta