Linq - calcular várias médias em uma consulta

Eu estou tentando converter algumas consultas SQL em Linq para evitar várias viagens para o banco de dados.

O antigo SQL que estou tentando converter faz:

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

Então eu criei duas classes 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>

e eu tenho umList<A> objeto que eu quero consultar. É preenchido a partir do banco de dados, então cada A na lista tem uma sub-lista com uma carga de Bs. Eu quero usar o Linq para objetos para consultar essa lista.

Então, eu preciso usar o Linq para obter o tempo médio entre o início de um A e a conclusão de seu filho Bs, e o tempo médio entre o início e a conclusão de cada B. Eu não escrevi o SQL original, então não tenho certeza se ele faz o que deveria!

Eu tenho várias dessas médias para calcular, então eu gostaria de fazer todas elas dentro de uma consulta mágica de Linq. Isso é possível?

questionAnswers(3)

yourAnswerToTheQuestion