2013-03-01 39 views
1

我想將包含一些集合的實體轉換爲Model,但我無法弄清楚如何在模型中包含集合。如何轉換爲具有集合的強類型?

爲了這只是一個簡單的例子,請參見下面的模式:

Namespace Models 

    Public Class ProductModel 
     Public Property ID As Integer 
     Public Property Description As String 
     Public Property IsInStock as Boolean 
     Public Property Orders As List(Of ProductOrderModel) 

    End Class 

    Public Class ProductOrderModel 
     Public Property ID As Integer 
     Public Property OrderDate As DateTime 
     Public Property DeliveredDate As DateTime? 
     Public Property ShippingAddress As String 
    End Class 

End Namespace 

現在,我可以輕鬆地投在產品型號如下:

Dim simplifiedProductModel as ProductModel = 
    From p in dc.Products _ 
    Select New ProductModel With { _ 
     .ID = p.ProductID, _ 
     .Description = p.ProductDescription, _ 
     .IsInStock = p.ProductIsInStock, _ 
     .OrderCount = p.Orders.Count() _ 
     } 

我想不通out是如何使用其簡化模型來包含集合。

Dim simplifiedProductModel as ProductModel = 
    From p in dc.Products _ 
    Select New ProductModel With { _ 
    .ID = p.ProductID, _ 
    .Description = p.ProductDescription, _ 
    .IsInStock = p.ProductIsInStock, _ 
    .OrderCount = p.Orders.Count(), _ 
    .Orders = p.orders.???? ===> New ProductOrderModel 
     With { 
      .ID = ???? o.OrderID , 
      .OrderDate = ???? o.Createdate, 
      etc. 
      } 
+2

「'公共財產的訂單作爲字符串列表(中ProductOrderModel)'」我不認爲這是有效的VB語法 - 你有兩種不同類型的聲明。 – 2013-03-01 15:58:49

+0

注意:「鑄造」一詞在這裏不適用。這不是你在做什麼。轉換更合適。用Linq術語來說,你會說你從一個數據視圖投影到另一個數據視圖。 – 2013-03-01 16:10:02

+0

@DStanley - 抱歉錯字 - 我會糾正的,我也會更正Cast/Conversion的內容。 – RichC 2013-03-01 16:47:17

回答

1

是這樣的?

Dim simplifiedProductModel as ProductModel = From p in dc.Products _ 
             Select New ProductModel With { _ 
             .ID = p.ProductID, _ 
             .Description = p.ProductDescription, _ 
             .IsInStock = p.ProductIsInStock, _ 
             .OrderCount = p.Orders.Count(), _ 
             .Orders = p.orders.Select(_ 
              Function(o) New ProductOrderModel _ 
               With { _ 
                .ID = o.OrderID , _ 
                .OrderDate = o.Createdate, _ 
                etc. 
               } 
              ) 
             } 
+0

是的,我在發佈問題後發現了3秒--haha。不過謝謝你的發帖! – RichC 2013-03-01 16:45:41

0

首先必須解決您的Public Property Orders As String As List(Of ProductOrderModel) declaradtion爲Public Property Orders As List(Of ProductOrderModel)。 然後你可以使用這個

.Orders = (from order in p.orders 
       Select New ProductOrderModel 
        With { 
          .ID = order .OrderID , 
          .OrderDate = order.Createdate, 
            etc. 
          }).ToList() 
相關問題