Есть два класса: сервер и матч.
public class Server
{
public int Id {get; set;}
...
public virtual ICollection<Match> Matches {get; set;}
}
public class Match
{
public int Id {get; set;}
public sting Timestamp {get; set;}
...
public virtual Server Server {get; set;}
}
Между ними связь One-to-many. Нужно посчитать среднее количество матчей в день на каждом сервере.
Сейчас это делаю примерно так (пробовал по-разному): в классе сервер определил метод
public double GetAverageMatchesByDay()
{
if (Matches.Count == 0) return 0;
retrun Matches
.ToList()
.GroupBy(m => DateTimeOffset.Parse(m.Timestamp).UtcDateTime.Date)
.Select(g => g.Count())
.Average();
}
Ну и дальше, где нужно:
foreach(var server in context.Servers)
{
var averageMatchesPerDay = server.GetAverageMatchesPerDay();
}
Проблема в том, что при 10 000 серверов и всего лишь по 10 матчей на каждом, это работает уже очень долго, матчей предполагается гораздо больше.
Как правильно реорганизовать связь, либо способ хранения, либо способ выборки всего этого, чтобы скорость ответа не превышала пару секунд?
Заранее спасибо.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть ссылка на wsdl файлКак мне получить данные по заданному url? Я делаю так:
ЗадачаЕсть база фильмов (фильм имеет различные поля, в данном контексте не имеет значение какие)
Есть папка которая содержит ещё папки и файлы! Как получить данные из всех файлов находящихся в главной папке?