在linq查询中将TimeSpan转换为毫秒

时间:2015-07-13 16:14:20

标签: c# entity-framework

我正在尝试使用实体框架在linq查询中向function getAppSettings(mobilesvc, appSettings){ var appSettingsValue; mobilesvc.invokeApi(appSettings, { method: 'GET' }).done(function (results) { var jsonResponse = JSON.parse(results.responseText); appSettingsValue = jsonResponse; }, function (error) { }); return appSettingsValue; } 添加TimeSpan。我有以下代码:

修改

DateTimeTimeSlots

ICollection<TimeSlot>具有TimeSlotDateTime Start

属性
TimeSpan Duration

它编译得很好,但不会在var linq = from s in schedulesBase join c in channelBase on s.ChannelId equals c.ChannelId select new { ... TimeSlots = s.TimeSlots, ... }; var timeslots = linq.SelectMany(t => t.TimeSlots); return from s in timeslots select new Resources.Event { ... end = DbFunctions.AddSeconds((DateTime?)s.Start, (Int32?)s.Duration.Seconds) ... }; s.Duration.Seconds之间添加任何时间。 由于以下代码可以正常工作

end

并按预期行事我必须对从end = DbFunctions.AddSeconds((DateTime?)s.Start, 500) 到秒的转换做错。

在第一种情况下我做错了什么?

1 个答案:

答案 0 :(得分:5)

我怀疑问题在于您使用Seconds代替TotalSecondsSeconds属性仅提供[-59, 59]范围内的值 - 例如,5分30秒将返回30,而不是330。

尝试:

end = DbFunctions.AddSeconds((DateTime?)s.Start, (Int32?)s.Duration.TotalSeconds)