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?