在日期时间添加一定长度的分钟以生成新字段

时间:2017-12-21 21:50:23

标签: c# linq

我需要列AppStart和持续时间我希望将持续时间添加到App Start但我使用的是linq。

我正在使用以下内容来获取约会,并且工作正常但我需要在此AppEnd中返回一个新字段,该字段基于持续时间字段,可以是15,25,30,60。

这是使用linq,并询问如何根据另一个字段在链接中添加新字段。

ANG

所以我的问题是如何创建一个新的字段AppEnd,同时保持上述查询中的所有数据完好无损?。

2 个答案:

答案 0 :(得分:1)

您需要使用匿名类型:

var appointments = _sourceEntities.Appointments
                                  .Where(a => a.ApptDate.Year == currentDate.Year &&
                                              a.ApptDate.Month == currentDate.Month &&
                                              a.ApptDate.Day == currentDate.Date.Day)
                                  .Select(a => new { a,
                                                     AppEnd = a.ApptTime.AddMinutes(a.Duration)
                                                    })
                                  .ToList();

然后,您可以使用Appointment访问现有.a.字段,使用.AppEnd访问AppEnd。

您还可以在新的匿名对象中投影各个字段:

                                  .Select(a => new { a.ApptDate,
                                                     a.ApptTime,
                                                     AppEnd = a.ApptTime.AddMinutes(a.Duration)
                                                    })

答案 1 :(得分:0)

列表中的每个项目......

AppEnd = ApptDate.Add(New TimeSpan(0, 60, 0));

编辑RE:使用LINQ。

Linq通常只是为了阅读东西。但是有可能。我看到你必须.ToList()了。

此处有关好奇的更多信息:Update all objects in a collection using LINQ

为您提供样品

_sourceEntities.Appointments.Where( a=> 
          a.AppEnd = a.ApptDate.Add(New TimeSpan(0, 60, 0)) ).ToList();

这只是给你所有60分钟的约会。当然你可以从这里扩展逻辑来做你想要的(例如放入a.Duration而不是60: - )。