我需要列AppStart和持续时间我希望将持续时间添加到App Start但我使用的是linq。
我正在使用以下内容来获取约会,并且工作正常但我需要在此AppEnd中返回一个新字段,该字段基于持续时间字段,可以是15,25,30,60。
这是使用linq,并询问如何根据另一个字段在链接中添加新字段。
ANG
所以我的问题是如何创建一个新的字段AppEnd,同时保持上述查询中的所有数据完好无损?。
答案 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: - )。