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