繁体   English   中英

使用实体框架仅按日期对行进行计数,而无需时间

[英]Count row only by date without time using Entity Framework

仔细检查CountEmailChart 在这里,我将输入DateTime ,它是带时间的完全格式化的日期。 但是问题是我只想比较下面的实体框架上的日期而不是时间来计算行数。 谁能告诉我该怎么做?

控制器代码:

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

Karan的答案是正确的,但结果查询将不为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);

尝试这样。 DateTime对象的.Date属性将仅返回Date部分。

如果您使用的是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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM