将字符串解析为Lambda表达式中的datetime

时间:2013-04-18 09:52:21

标签: .net vb.net datetime lambda

我有一个服务调用,它将日期和时间作为字符串从SAP Web服务返回,我试图将这些字符串解析为本地模型中的日期时间对象。

到目前为止,我已经删除了该方法,但我注意到的第一件事是编译器抱怨它无法将日期转换为非委托类型。

错误

  

错误1 Lambda表达式无法转换为'Date',因为'Date'   不是委托类型。 C:\ Users \ phil.murray \ Desktop \ SAP Orders   Test \ WindowsApplication1 \ Form1.vb 43 57 WindowsApplication1

代码

    _ordersProxy.Z_SPIN_ORDERS(_header, _order, _code)

    Return From h In header.OrderBy(Function(w) w.AUFNR)
                Select New Order With {.Aufnr = h.AUFNR, .BatchType = h.BATCH_TYPE,
                                       .EngineType = h.ENGINE_TYPE, .ProgrammedQuantity = h.PROGRAMMED_QTY,
                                       .StartDate = Function()

                                                        Dim startDate As DateTime
                                                        Dim startTime As DateTime

                                                        Date.TryParse(h.START_DATE, startDate)
                                                        Date.TryParse(h.START_TIME, startTime)


                                                        Return New DateTime(startDate.Year, startDate.Month, startDate.Day,
                                                                            startTime.Hour, startTime.Minute, startTime.Second)

                                                    End Function}

本地模特

Public Class Order

    Public Property Aufnr As String
    Public Property EngineType As String
    Public Property ProgrammedQuantity As Int16
    Public Property BatchType As String
    Public Property StartDate As DateTime

    Public Property OrderParts As IList(Of Part)
    Public Property OrderProcessCodes As IList(Of ProcessCode)

End Class

使用lambda表达式解析此字符串时我缺少什么?

1 个答案:

答案 0 :(得分:1)

问题是StartDate可能是DateTime类型的属性 - 而您的lambda表达式可以赋予Func(Of DateTime)

你可以调用 lambda表达式来设置StartDate,但从根本上说如果属性是DateTime类型,你需要给它一个,不仅仅是一个可以执行以获取值的函数。

当然,另一种替代方案(可能)是更改StartDate属性类型。目前还不清楚你到底想要做什么,或者你正在设置这个属性的对象是什么类型。