Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 我需要创建一个要订购的产品列表_Vb.net_Visual Studio - Fatal编程技术网

Vb.net 我需要创建一个要订购的产品列表

Vb.net 我需要创建一个要订购的产品列表,vb.net,visual-studio,Vb.net,Visual Studio,我需要创建要订购的产品列表(基于采购级别和当前剩余金额),并根据采购优先级将产品放入适当的数据结构中。并计算待订购产品的总数,更新剩余金额。 范例 我有两张产品和订单的桌子。产品表包含:请购单名称、剩余、优先级、采购级别和价格。订单表应包含订单日期和付款总额。 订单列表应显示在数据网格视图上 Public Function NewOrder() Dim product As List(Of Product) = New List(Of Product) Dim or

我需要创建要订购的产品列表(基于采购级别和当前剩余金额),并根据采购优先级将产品放入适当的数据结构中。并计算待订购产品的总数,更新剩余金额。 范例

我有两张产品和订单的桌子。产品表包含:请购单名称、剩余、优先级、采购级别和价格。订单表应包含订单日期和付款总额。 订单列表应显示在数据网格视图上

     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
公共函数NewOrder()
Dim产品作为列表(产品)=新列表(产品)
将订单作为列表(采购订单)=新列表(采购订单)
对于产品中的每个p作为产品
如果p.剩余

我编写了这个函数,但它不起作用。

试试这样的方法

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
模块1
副标题()
Dim产品作为列表(产品)=新列表(产品)
将新订单调整为新列表(采购订单)
'添加产品
product.Add(带有{.ProductName=“Coca-Cola 1.5L”、.ProdID=999、.Priority=1000、.Remaining=500、.PurchaseLevel=600}的新产品)
'检查所有要重新订购的产品
新订单=新订单(产品)
Dim ListoForder作为列表(列表(采购订单))
ListOfOrders=拆分为块(NewOrders,5)
端接头
私有函数拆分为块(键作为列表(属于PurchaseOrder),块大小作为整数)作为列表(属于列表(属于PurchaseOrder))
返回键_
.Select(函数(x,i)用{Key.Index=i,Key.Value=x}新建)_
.GroupBy(函数(x)(x.Index\chunkSize))_
.Select(函数(x)x.Select(函数(v)v.Value).ToList())_
托利斯先生()
端函数
公共功能新订单(产品作为列表(产品))
将订单作为列表(采购订单)=新列表(采购订单)
对于产品中的每个p作为产品
如果p.剩余
我添加了可用于标识产品的ProdID字段

我认为您的主要问题是在将其添加到订单列表之前,没有在NewOrder函数中创建新的PurchaseOrder对象

添加了一个函数“SplitIntoChunks”,该函数返回OrdersList列表。。。每个OrdersList将恰好包含5个PurchaseOrders对象(最后一个OrdersList包含任何剩余的对象,即具有5个或更少的PurchaseOrders)。。。希望这有助于


SplitIntoChunks是在这里找到的

,我有一个关于列表容量的问题。我如何将要订购的产品的最大数量设置为5个,如果超过5个,它们(第五个之后的所有订单)将放在其他列表中。如果你能帮忙,我会很高兴的。别忘了选择一个答案。。。。
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