C# EF:如何在 EF 中的两个日期之间搜索但想从数据中排除时间

问题描述 投票:0回答:4

我不知道如何在 EF 中进行比较时从数据中排除时间。

    using (var db = new DbContext())
    {
        var query = from n in db.BDatas
                    orderby n.AddDate,n.CountryCode
                    where n.CountryCode=="GB" 
                    && (n.AddDate >= stdate.Date && n.AddDate <= etdate)
                    select n;
    }

我想我上面的查询将包括比较发生的日期和时间。所以告诉我该怎么做?

c# entity-framework
4个回答
16
投票

你不需要从 SQL 比较中排除时间。您可以从传递的参数中排除时间:

using (var db = new DbContext())
{
    var startDate = stdate.Date; 
    var endDate = etDate.Date.AddDays(1);

    var query = from n in db.BDatas
                orderby n.AddDate,n.CountryCode
                where n.CountryCode=="GB" 
                && (n.AddDate >= startDate && n.AddDate < endDate)
                select n;
}

请注意,我使用了

< endDate
并增加了一天。因此,您将获得前一天任何时间的结果。


4
投票

如果您的字段

AddDate
是日期时间字段,您可以按如下方式进行操作

    using (var db = new DbContext())
        {
            var query = (from n in db.BDatas
                        orderby n.AddDate,n.CountryCode
                        where n.CountryCode=="GB" 
                        select n).Where(n => n.AddDate.Date >= stdate.Date &&
 n.AddDate.Date <= etdate).ToList();
        }

0
投票

使用 Entity Framework Core

有一个模型“火”,需要将日期字符串从格式“yyyy-MM-dd”传递到日期

在我的服务类中注入我的 dbContext

首先将日期字符串转换为 DateTime 并使用它们来获取记录,如下所示

    var sDate = DateTime.ParseExact(startDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
    var eDate = DateTime.ParseExact(endDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
    var fireData = await _dbContext.Fire.Where(b => (b.CreatedAt >= sDate && b.CreatedAt < eDate) && b.UploadStatus == "False").ToListAsync();
    return fireData;

0
投票

一天不加 一种简单的使用方法。日期 喜欢

var query = from n in db.BDatas
            orderby n.AddDate,n.CountryCode
            where n.CountryCode=="GB" 
            && (n.AddDate.Date >= startDate && n.AddDate.Date < endDate)
            select n;
© www.soinside.com 2019 - 2024. All rights reserved.