Yul*_*ian 6 c# sql linq time entity-framework
我的模型中有一个Publication实体.我想要检索从现在开始不到10分钟创建的所有出版物.
var publications = myEntities.Publications.
.Where(p => p.CreationUserId == exampleId
&& (DateTime.Now - p.CreationDate).Minutes < 10);
Run Code Online (Sandbox Code Playgroud)
试图执行上面的语句,我得到以下异常:"DbArithmeticExpression参数必须具有数字公共类型.".我试图从DbFunctions类中寻找合适的函数,但没有成功.任何人都可以提出解决方案吗?
Jon*_*eet 13
不要在查询中执行算术 - 在查询之前执行此操作,以便您基本上指定"最早的发布创建时间":
// Deliberate use of UtcNow - you should almost certainly be storing UTC, not
// local time...
var cutoff = DateTime.UtcNow.AddMinutes(-10);
var publications = myEntities.Publications
.Where(p => p.CreationUserId == exampleId &&
p.CreationDate >= cutoff);
Run Code Online (Sandbox Code Playgroud)
请注意,即使您的原始查询确实有效,也不会执行您想要的操作 - 它会返回0-10分钟前,60-70分钟前,120-130分钟前创建的出版物等.您需要TotalMinutes.
好的,我收到了Skeeted但是加入了对话,有点可能对其他人有用......
你正在寻找的方法是DbFunctions.DiffMinutes.它给出了两个值之间的总分钟数.
var publications = myEntities.Publications.
.Where(p => p.CreationUserId == exampleId
&& DbFunctions.DiffMinutes(p.CreationDate, DateTime.Now) < 10);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |