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