计算MVC中两个日期时间之间的差异5
问题描述:
我正在用Entity Framework学习ASP.NET和MVC,这就是为什么这个问题对你们中的一些人来说似乎微不足道。计算MVC中两个日期时间之间的差异5
我的目标是相对简单: 我有这样一个模型(Hour.cs):
public class Hour
{
public int ID { get; set; }
public int UsrID { get; set; }
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
public DateTime StartDateTime { get; set; }
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
public DateTime EndDatetime { get; set; }
public int? ProjectID { get; set; }
public virtual Project Project { get; set; }
public virtual Usr Usr { get; set; }
}
我现在有一个观点,即显示了在表/列表的信息: StartDateTime
,EndDateTime
,UsrID
,ProjectID
我想为TotalHrs添加一列,表示为StartDateTime
和EndDateTime
之间的差值。
为了让我看了许多文章告诉我在的地方行使用的时间跨度的区别:
Timspan diff = StartDateTime - EndDateTime;
我不明白的是在哪里插入该代码。我假设它在控制器中,但我不知道如何。 我的索引方法看起来像这样:
public ActionResult Index()
{
var hours = db.Hours
.Include(c => c.Usr)
.Include(p => p.Project);
return View(hours.ToList());
}
任何指针赞赏!
答
我反对将这样的计算存储在数据库中,因为您可以在客户端轻松完成此操作,因为您拥有所有必需的信息。
添加一个新的属性,并指定只是一个GET accesor:
public class Hour
{
// ...
[NotMapped]
public TimeSpan TotalHrs
{
get
{
return this.StartDateTime - this.EndDatetime;
}
}
// ...
}
然后,你可以访问它就像在你看来,控制器的任何其他财产或消耗它的任何类。
TimeSpan val = hour.TotalHrs;
+0
只需注意'TotalHrs'不能在EF/Linq-2-Sql查询中使用。 LINQ语句必须是Linq-2-Objects(它需要在Enumerable上运行,而不是Queryable)。 –
你打算怎么区别? – Jasen