【发布时间】:2017-12-21 19:40:45
【问题描述】:
在 .Net Core 应用程序中使用 System.Linq 我尝试将 AssignedDate 和 DateTime.Now 之间的日期差异放入 ElapsedTime。
var query = from r in _context.Request
join st in _context.ServiceType on r.ServiceTypeId equals st.ServiceTypeId
join u in _context.Users on r.AssignedUserId equals u.UserId into ju
from u in ju.DefaultIfEmpty()
select new RequestDto
{
RequestId = r.RequestId,
UserId = r.UserId,
//..
AssignedUserId = r.AssignedUserId.Value,
AssignedUser = u.Name,
ElapsedTime = DateDiff(r.AssignedDate, DateTime.Now)
};
DateDiff 不是一个有效的函数。我将如何替换它?
编辑:使用 MicrosoftEntityFrameworkCore 2.0。尝试 EntityFunction 无效。
再次编辑:我可以在视图侧使用剃须刀,例如:
@if (item.AssignedDate != null){@DateTime.Compare(item.AssignedDate.Value, DateTime.Now)}
但这不起作用??
【问题讨论】:
-
看起来您正在使用 EF Core。请更新标签并指定 EF Core 版本。
-
DateTime - DateTime = TimeSpan... -
差异应该以小时、天、...为单位吗?
-
EntityFrameworkCore 2.0 |差异应显示在 Minutes:Seconds
-
我个人认为“核心”产品还没有为大多数数据库使用做好准备。他们添加了
EF.Functions功能和DBFunctions注册功能,但我认为它与标准化的EntityFunctions相比没有竞争力。
标签: c# linq asp.net-core ef-core-2.0