Linq - oblicz wiele średnich w jednym zapytaniu

Usiłuję przekonwertować niektóre zapytania SQL do Linq, aby uniknąć wielu podróży do bazy danych.

Stary SQL, który próbuję przekonwertować, robi:

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

Dlatego stworzyłem dwie klasy 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>

I mamList<A> obiekt, który chcę zapytać. Jest wypełniony z bazy danych, więc każdy A na liście ma podlistę zawierającą ładunek Bs. Chcę użyć Linq-to-objects do zapytania tej listy.

Muszę więc użyć Linq, aby uzyskać średni czas między początkiem A i ukończeniem jego dziecka Bs, a także średni czas między rozpoczęciem i zakończeniem każdego B. Nie napisałem oryginalnego SQL, więc nie jestem do końca pewien, czy robi to, co powinien!

Do obliczenia mam kilka takich średnich, więc chciałbym je wszystkie zrobić w jednym magicznym zapytaniu Linq. czy to możliwe?

questionAnswers(3)

yourAnswerToTheQuestion