无法获得添加到日期时间的时间跨度

时间:2015-04-13 13:23:18

标签: c# linq

我真的尝试过这个,看起来很简单。

c#,使用linq。

我有一个linq查询:

            var allNewStops = (from stops in rDb.DistributionStopInformations
                           where stops.CustomerNo == 91000 && stops.StopSignature != "" && stops.ActualServiceDate == dateToCheck
                           select new
                           {
                               stopName = stops.StopName,
                               signature = stops.StopSignature,
                               customerRefNumber = stops.CustomerReference,
                               dateOfStop = stops.ActualServiceDate,
                               timeOfStop = stops.ActualArrivalTime

                           }).Distinct();

这似乎工作正常,我需要将dateOfStop与timeOfStop结合 - 最好是在查询中,但之后也可以。

我试过了:

DateTime combined = stopinfo.dateOfStop.Add;

但添加声明它是日期时间的未知方法

它确实显示dateOfStop是DateTime,timeOfStop是TimeSpan。

我已经尝试了大约4种不同的组合,我能想到的一切。

我做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

从我看到的情况看来,你似乎试图错误地使用Add,因为Add需要一个参数(一个无参数的版本不存在)。除此之外,由于我不知道确切的数据布局,我确保在它们是对象的情况下进行扩展转换,但如果它们已经是相应的数据类型,那么它们可以在没有(DateTime)和(TimeSpan)的情况下使用:

        var allNewStops = (from stops in rDb.DistributionStopInformations
                       where stops.CustomerNo == 91000 && stops.StopSignature != "" && stops.ActualServiceDate == dateToCheck select stops)
                       .AsEnumerable().Select(stops => new {     
                           stopName = stops.StopName,
                           signature = stops.StopSignature,
                           customerRefNumber = stops.CustomerReference,
                           dateOfStop = stops.ActualServiceDate,
                           timeOfStop = stops.ActualArrivalTime,
                           combinedStop = ((DateTime)stops.ActualServiceDate).Add((TimeSpan)stops.ActualArrivalTime)

                       }).Distinct();

答案 1 :(得分:0)

DateTime aNewDateTime = theOldDate.Add(aTimeSpan);

答案 2 :(得分:0)

如果您的dateOfStop来自DateTime类型且timeOfStop是TimeSpan,那么添加它应该没有问题:

DateTime combined = dateOfStop.Add(timeOfStop);