比较时间只在linq和sql中的时间范围

时间:2016-01-23 11:20:45

标签: c# linq-to-sql

我的数据库中有datetime列,其值为2016-01-23 14:47:00。 我希望在12:00:00到15:00:00之间获得过去2个月的结果。 我创建了datetime变量,但今天就变成了日期。

var q11 = DateTime.Parse("12:00:00 AM");
var q12 = DateTime.Parse("03:00:00 AM");
cq11 += _db.deliverys.Where(r => r.mainid == item.id && 
                                 r.state == true && 
                                 r.readtime >= q11 && 
                                 r.readtime <= q12).Count();

1 个答案:

答案 0 :(得分:1)

因此,取决于您的数据集和更大范围的解决方案;这可能是一个不太理想的解决方案,因为我不认为TimeOfDay被转换为sql。这将使用mainid和state查询将数据集拉入内存,然后使用时间和时间跨度在内存中进一步过滤。

TimeSpan start = new TimeSpan(12, 0, 0); //NOON
TimeSpan end = new TimeSpan(15, 0, 0);   //3 PM

var subQuery = _db.deliverys.Where(r => r.mainid = item.id && r.state == true).ToList();

var results = subQuery.Where(q => (q.TimeOfDay > start) && (q.TimeOfDay < end));

我测试了一个内存列表,它在几个月内撤回了日期。