Linq - рассчитать несколько средних в одном запросе

Я пытаюсь преобразовать некоторые запросы SQL в Linq, чтобы избежать нескольких обращений к базе данных.

Старый SQL, который я пытаюсь преобразовать, выполняет:

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

Итак, я создал два класса 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>

И у меня естьList<A> объект, который я хочу запросить. Он заполняется из базы данных, поэтому каждый A в списке имеет подсписок с загрузкой B. Я хочу использовать Linq-to-objects для запроса этого списка.

Поэтому мне нужно использовать Linq, чтобы получить среднее время между началом A и завершением его дочерних B, а также среднее время между началом и завершением каждого B. Я не писал оригинальный SQL, поэтому я не совсем уверен, что он делает то, что должен!

У меня есть несколько из этих средних значений для вычисления, поэтому я хотел бы сделать их все в одном волшебном запросе Linq. Это возможно?

Ответы на вопрос(3)

Ваш ответ на вопрос