我不知道如何在 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;
}
我想我上面的查询将包括比较发生的日期和时间。所以告诉我该怎么做?
你不需要从 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
并增加了一天。因此,您将获得前一天任何时间的结果。
如果您的字段
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();
}
使用 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;
一天不加 一种简单的使用方法。日期 喜欢
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;