2013-03-01 59 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() 
相关问题