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?