我无法使用ForEach()
和linq来计算我的模型中的3个字段。查询返回特定问题的“活动”。其中一个领域是“TimeSpent”,这是一个long
。基本上是以毫秒为单位花费在这个项目上的时间。我试图根据每个活动的“TimeSpent”字段显示Days,Hours和Minutes。这里的型号:Linq ForEach()不填充字段
public class ActivityGridModel
{
public DateTime ActivityDate { get; set; }
public string ActivityType { get; set; }
public string Notes { get; set; }
public string EnteredBy { get; set; }
public long TimeSpent { get; set; }
public int Days { get; set; }
public int Hours { get; set; }
public int Minutes { get; set; }
}
这是我建立查询:
var activities = from a in Session.Context.Activities
join at in Session.Context.ActivityTypes
on a.ActivityTypeID equals at.ActivityTypeID
join u in Session.Context.Users
on a.CreatedByUserID equals u.UserID
where a.IssueID == issueId
select new ActivityGridModel()
{
ActivityDate = a.ActivityDate,
ActivityType = at.ActivityType1,
Notes = a.Notes,
EnteredBy = u.FirstName + " " + u.LastName,
TimeSpent = a.TimeSpent
};
这里的地方我尝试填充天数,小时,和我的模型纪要:
activities.ToList().ForEach(a =>
{
TimeSpan timeSpent = new TimeSpan(a.TimeSpent);
a.Days = timeSpent.Days;
a.Hours = timeSpent.Hours;
a.Minutes = timeSpent.Minutes;
});
return activities.ToList();
我得到了结果中的所有其他字段,但Days,Hours和Minutes都是0.我不太确定我做错了什么。任何帮助表示赞赏。
虽然@ Selman22答案的作品是正确的,我决定使用这个解决方案,因为brz是正确的,这些领域应该内部计算。 – Robert 2014-09-11 14:11:12