C# 正确比较LINQ中没有时间的DatetimeOffset与实体
我一直在测试几种方法来比较LINQ中的两个C# 正确比较LINQ中没有时间的DatetimeOffset与实体,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我一直在测试几种方法来比较LINQ中的两个DateTimeOffset对象与实体,但我不确定哪一种方法是最有效的,也是最正确的方法 我尝试了以下方法: SomeTable.Where(a => DbFunctions.TruncateTime(a.StartUtc) <= intendedDate && DbFunctions.TruncateTime(a.EndUtc) >= intendedDate); 但是这个查询需要时间,我不能这样做 我不是专家,但对
DateTimeOffset
对象与实体,但我不确定哪一种方法是最有效的,也是最正确的方法
我尝试了以下方法:
SomeTable.Where(a => DbFunctions.TruncateTime(a.StartUtc) <= intendedDate && DbFunctions.TruncateTime(a.EndUtc) >= intendedDate);
但是这个查询需要时间,我不能这样做
我不是专家,但对于这样一个简单的需求,第一个查询似乎非常长且复杂。在这种情况下,我应该使用原始SQL而不是带有EF的LINQ吗?我无法决定哪种方法最有效。
我觉得CAST('2016-11-02 00:00:00 AM-02:00'作为日期)
比EF生成的查询简单得多,因此性能更高
这里最好的做法是什么?在时间限制方面如何处理
var cmpStartDate = intendedDate.AddDays(1);
var ans = SomeTable.Where(a => a.StartUtc < cmpStartDate && a.EndUtc > intendedDate.Subtract(TimeSpan.FromTicks(1)));
var cmpStartDate=intendedDate.AddDays(1);
var ans=SomeTable.Where(a=>a.StartUtcintendedDate.Subtract(TimeSpan.FromTicks(1));
使用“日期”属性,该属性将时间截断为午夜,然后获取日期之间的差值。DateTime以双精度形式存储在计算机中,整数部分为自1900年1月1日起的天数,分数为当前时间/24(即3.5小时/24小时)。L2E不支持@jdwengDate
属性
((DATEDIFF (day, [Extent1].[StartUtc], '2016-11-01 00:00:00 -02:00')) >= 0) AND ((DATEDIFF (day, '2016-11-01 00:00:00 -02:00', [Extent1].[EndUtc])) >= 0)
var cmpStartDate = intendedDate.AddDays(1);
var ans = SomeTable.Where(a => a.StartUtc < cmpStartDate && a.EndUtc > intendedDate.Subtract(TimeSpan.FromTicks(1)));