2016-03-06 70 views
0

我需要根據購買優先級創建要訂購的產品清單(基於購買水平和當前剩餘金額)並將產品置於適當的數據結構中。並且還計算要訂購的產品的總數更新剩餘金額。 示例我需要創建一個要訂購的產品清單

 Product name Coca Cola 1.5L 
     Priority  1000 
     Remaining  500  
     Purchaselevel 600       
     To order = (600-500)*2 = 200 

我有兩個產品和訂單表。產品表包含:產品名稱,剩餘量,優先級,採購水平和價格。訂單表應該包含訂單日期和總金額。 訂單列表應顯示在數據網格視圖上。

 Public Function NewOrder() 
    Dim product As List(Of Product) = New List(Of Product) 
    Dim orders As List(Of PurchaseOrder) = New List(Of PurchaseOrder) 
    For Each p As Product In product 
     If p.Remaining < p.PurchaseLevel Then 
      PurchaseOrder.totalToOrder = (p.PurchaseLevel - p.Remaining) * 2 
      orders.Add(PurchaseOrder) 
     End If 
    Next 
    Return orders 
    End Function 

我寫了這個函數,但它不起作用。

+0

不要忘記選擇\贊成票的答案.... – Monty

回答

0

嘗試是這樣的....

Module Module1 

Sub Main() 
    Dim product As List(Of Product) = New List(Of Product) 
    Dim NewOrders As New List(Of PurchaseOrder) 
    ' add a product 
    product.Add(New Product With {.ProductName = "Coca Cola 1.5L ", .ProdID = 999, .Priority = 1000, .Remaining = 500, .PurchaseLevel = 600}) 
    ' check all products for reorder 
    NewOrders = NewOrder(product) 
    Dim ListOfOrders As List(Of List(Of PurchaseOrder)) 
    ListOfOrders = SplitIntoChunks(NewOrders, 5) 
End Sub 

Private Function SplitIntoChunks(keys As List(Of PurchaseOrder), chunkSize As Integer) As List(Of List(Of PurchaseOrder)) 
    Return keys _ 
     .Select(Function(x, i) New With {Key .Index = i, Key .Value = x}) _ 
     .GroupBy(Function(x) (x.Index \ chunkSize)) _ 
     .Select(Function(x) x.Select(Function(v) v.Value).ToList()) _ 
     .ToList() 
End Function 

Public Function NewOrder(Product As List(Of Product)) 
    Dim orders As List(Of PurchaseOrder) = New List(Of PurchaseOrder) 
    For Each p As Product In Product 
     If p.Remaining < p.PurchaseLevel Then 
      Dim PurchaseOrder = New PurchaseOrder With {.ProdID = p.ProdID} 
      PurchaseOrder.totalToOrder = (p.PurchaseLevel - p.Remaining) * 2 
      orders.Add(PurchaseOrder) 
     End If 
    Next 
    Return orders 
End Function 

End Module 

' your classes 
Class Product 
    Property ProductName As String 
    Property ProdID As Integer 
    Property Priority As Integer 
    Property Remaining As Integer 
    Property PurchaseLevel As Integer 
End Class 

Class PurchaseOrder 
    Property ProdID As Integer 
    Property totalToOrder As Integer 
End Class 

我補充說,可以用來識別產品

我覺得你的主要問題是沒有建立在你的NewOrder新的PurchaseOrder對象的ProdID場函數將其添加到訂單清單之前...

已添加一個函數'SplitIntoChunks',該函數返回一個List OrdersLists ...每個OrdersList將精確地包含5個PurchaseOrders對象(包含任何餘數的最後一個OrdersLists即具有5個或更少個PurchaseOrder)...希望幫助....

的SplitIntoChunks發現這裏Split a List into parts - VB conversion fails

+0

太謝謝你了,我設法做到了! – FPQ

+0

我對List的容量有一個疑問。如何將訂購產品的最大數量設置爲5,如果超過5個(所有訂單在第五個之後)將被放置在另一個列表中。如果你能幫忙,我會很高興 – FPQ

相關問題