如何检查实体框架中特定日期/工作日下一组值出现的次数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查实体框架中特定日期/工作日下一组值出现的次数相关的知识,希望对你有一定的参考价值。

我想要一种方法来检查在特定工作日调用票证的最大和最小时间(例如:星期一:最多5张票; 2分钟),票证的ID范围在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;
    }
}
答案

您的代码效率非常低,因为它依赖于从数据库返回整个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方法。

以上是关于如何检查实体框架中特定日期/工作日下一组值出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

如何对位于开始日期和结束日期之间的一组值求和?

将一组值映射到百分比

如何在一组值后添加特定字符串

检查数组是不是至少包含 PHP 中的一组值

在循环中跳过一组值(在数组中) - Python3

SQL 查询 (Pro*C) 如何能够找到 db 表中不存在的一组值