Давайте начнем с получения среднего времени между началом и концом B:
1) Сначала вам нужна разница во времени между началом и концом каждого объекта B, поэтому вы должны сделать это:
List<TimeSpan> timeSpans = new List<TimeSpan>();
foreach (B myB in BList)
{
TimeSpan myTimeSpan = myB.CompletedDate.Subtract(myB.CreatedDate);
timeSpans.Add(myTimeSpan);
}
2) Теперь вам нужно получить среднее значение этого. Вы можете сделать это, используя лямбда-выражения:
//This will give you the average time it took to complete a task in minutes
Double averageTimeOfB = timeSpans.average(timeSpan => timeSpan.TotalMinutes);
Теперь вы можете сделать то же самое, чтобы получить среднее время между стартом А и финишем Б следующим образом:
1) Получите разницу во времени для даты начала A и каждой даты завершения B:
List<TimeSpan> timeSpans_2 = new List<TimeSpan>();
foreach (B myB in BList)
{
TimeSpan myTimeSpan = myB.CompletedDate.Subtract(objectA.CreatedDate);
timeSpans_2.Add(myTimeSpan);
}
2) Получите среднее значение этих разностей времени точно так же, как указано выше:
//This will give you the average time it took to complete a task in minutes
Double averageTimeOfAandB = timeSpans_2.average(timeSpan => timeSpan.TotalMinutes);
И все готово. Я надеюсь, что это помогает. Обратите внимание, что этот код не был проверен.
РЕДАКТИРОВАТЬ: Помните, что LINQ использует выражения Lamda, но это скорее синтаксический сахар (не знаю много о реализации, поэтому я надеюсь, что вы не против меня) А также вы можете обернуть реализации, которые я предоставляю в методы, чтобы вы могли вызывать их несколько раз для Списка объектов A.