Как проверить, сколько раз группа значений появлялась под определенной датой / днем ​​недели в Entity Framework - PullRequest
0 голосов
/ 22 марта 2019

Мне нужен способ проверить максимальное и минимальное количество раз, когда билет был вызван в определенный день недели (например, понедельник: 5 билетов максимум; 2 минуты), у билета есть идентификатор, который находится в диапазоне от 0 до 4, поэтому яхочу, чтобы их всех заметили.

Вот что у меня сейчас есть:

int S = 0;
var senhas = _db.SenhaSet.ToList();
double[] countersemana = new double[20];

foreach (var senha in senhas)
{
    if (senha.Data.DayOfWeek == DayOfWeek.Monday && senha.IdTipoSenha >= 0)
    {
        S++;
        break;
    }
}

1 Ответ

0 голосов
/ 22 марта 2019

Ваш код очень неэффективен, так как он полагается на то, что возвращает всю таблицу SenhaSet из базы данных, а затем зацикливается на ней.Вы хотите применить фильтр через Entity Framework для базы данных.Что-то вроде (я не знаю ваших имен столбцов, поэтому я предполагаю):

var senhas = _db.SenhaSet
    .Where(s => SqlFunctions.DatePart("dw", s.Data) == DayOfWeek.Monday && IdTipoSenha >= 0)
    .GroupBy(s => DbFunctions.TruncateTime(s.Data))
    .Select(s => new {
        TicketDate= s.Key,
        Count = s.Count(t => t.IdSenha)
    })
    .ToList();

int maxTickets = senhas.Max(s => s.Count);
int minTickets = senhas.Min(s => s.Count);

Это предполагает, что база данных является SQL Server для использования метода System.Data.Objects.SqlClient.SqlFunctions.DatePart.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...