Считать строки только по дате без времени, используя Entity Framework - PullRequest
0 голосов
/ 30 июня 2018

Проверьте CountEmailChart внимательно. Здесь я беру ввод DateTime, который является полностью отформатированной датой со временем. Но проблема в том, что я хочу сравнить только дату, а не время в Entity Framework ниже, чтобы посчитать количество строк. Может кто-нибудь сказать мне, как я могу это сделать?

Код контроллера:

public int CountEmailChart(DateTime date, int campaignID)
{
    int count = dbcontext.CampaignEmails
                         .Count(x => x.DateSigned == date && x.CampaignID == campaignID);
    return count;
}

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Ответ Карана правильный, но в результате запроса не будет использоваться индекс для DateSigned. Если такой индекс существует (или комбинированный индекс для столбцов CampaignID и DateSigned), вы можете предпочесть такой подход:

var startDate = date.Date;
var endDate = date.Date.AddDay(1);
int count = dbcontext.CampaignEmails.Count(x => x.CampaignID == campaignID && x.DateSigned >= startDate && x.DateSigned < endDate);
0 голосов
/ 30 июня 2018

Попробуй вот так. .Date свойство объекта DateTime будет возвращать только часть даты.

Если вы используете Entity Framework 6, то.

date = date.Date;
int count = dbcontext.CampaignEmails.Count(x => DbFunctions.TruncateTime(x.DateSigned) == date.Date && x.CampaignID == campaignID);

прочее

date = date.Date;
int count = dbcontext.CampaignEmails.Count(x => EntityFunctions.TruncateTime(x.DateSigned) == date.Date && x.CampaignID == campaignID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...