Message ms = db.Messages.FirstOrDefault(m => m.Id == 50);
if (ms.Date.CompareTo(Date) > 0) { Console.WriteLine("I don't understand"); }
foreach (Message msg in db.Messages.Where(m => m.Date.CompareTo(Date)>0))
数据库中有一个消息字符串,Id=50 和某个时间(这是真的)。有一个日期日期,客户将其发送给我,我将其与 Id=50(以毫秒为单位)的消息一起发送给他。似乎第二行中的条件不应该触发?确实如此,但是在第三个中,在 Id=50 的行上似乎有类似的行,lambda 表达式(m => m.Date.CompareTo(Date)>0)
产生true
. 此外,DateTime.Ticks
第 50 条消息和对象的属性Date
相同。
注意:第一行和第二行仅用于实验,解决问题后不应该。
这些行执行的区别:第
1 行和第 2行在客户端,在 .NET 端
第 3 行将在服务器端执行。当你这样写
你会得到这样的查询
如果您不对数据库中的字段执行任何转换,它也不适合您。
如果消息不直接访问数据库,则比较将是正确的。例如,我这样做了: