![](/img/trans.png)
[英]DateTime.TryParse() returns different results on different computers with explicit culture
[英]FirstOrDefault giving different results on different computers when comparing DateTime? objects
我正在尝试比较 IQueryable 中的两个可为空的 DateTime 对象(从数据库中获取),如下所示:
result.FirstOrDefault(x => x.FirstDateTime == secondDateTime)
这可以在某些开发人员的计算机上正确执行,但在我的计算机上却不能。 它没有结果。 因为如果我将结果转换为这样的列表,它会起作用:
result.ToList().FirstOrDefault(x => x.FirstDateTime == secondDateTime)
当然我不想留下这样的代码,这只是为了表明它不是因为在 IQueryable 中找不到日期
两个值都是 UTC。 我尝试使用Single
、 SingleOrDefault
、 First
和Where
都具有相同的结果。 我还尝试将FirstDateTime.Value
与secondDateTime.Value
进行比较。 同样的结果
IQueryable 的提供者是
System.Data.Entity.Internal.Linq.DbQueryProvider。
什么可能导致这种情况? 为什么第一段在某些计算机上有效,而在其他计算机上无效,这取决于什么?
这是正在生成的 SQL:
FROM ( SELECT
[Extent1].[Id] AS [Id],
[Extent1].[OtherProperty1] AS [OtherProperty1],
[Extent1].[Version] AS [Version],
[Extent1].[Submitted] AS [Submitted],
[Extent1].[SubmittedBy] AS [SubmittedBy],
[Extent1].[Created] AS [Created],
[Extent1].[CreatedBy] AS [CreatedBy],
[Extent2].[Value] AS [Value],
[Extent2].[OtherProperty2] AS [OtherProperty2],
[Extent2].[Description] AS [Description],
[Extent2].[Latitude] AS [Latitude],
[Extent2].[Longitude] AS [Longitude],
[Extent2].[OtherProperty3] AS [OtherProperty3],
[Extent2].[OtherProperty4] AS [OtherProperty4],
[Extent2].[FirstDateTime] AS [FirstDateTime],
''0X0X'' AS [C1]
FROM [dbo].[StructuredInformations] AS [Extent1]
INNER JOIN [dbo].[Positions] AS [Extent2] ON [Extent1].[Id] = [Extent2].[Id]
WHERE ([Extent1].[OtherProperty1] = @p__linq__0) AND ([Extent2].
[FirstDateTime] IS NOT NULL) AND ([Extent2].[FirstDateTime] = @p__linq__1)
) AS [Project1]
ORDER BY [Project1].[OtherProperty2] DESC, [Project1].[FirstDateTime] ASC,
[Project1].[Value] ASC',N'@p__linq__0 int,@p__linq__1
datetime2(7)',@p__linq__0=7,@p__linq__1='2016-10-11 11:45:53.6230000'
IQueryable
不保证排序。 List<T>
确实如此。 要保持IQueryable
并保持顺序,您应该尝试对IQueryable
进行排序,而不是尝试获得第一个结果:
result.OrderBy(y => y.FirstDateTime).FirstOrDefault(x => x.FirstDateTime == secondDateTime)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.