比循环数千条记录更快捷的方法

时间:2016-10-20 10:30:58

标签: vb.net for-loop collections

是否有比循环数千条记录(大约24k)更快的方法?

代码:

For n = 0 To oCHStockItems.Count - 1

    Dim itemSellingPrice As New CH.CH_ItemSellingPrice

    With itemSellingPrice
        .StockItem = oCHStockItems(n).StockItem
        .Code = oCHStockItems(n).StockItem.Code
        .Name = oCHStockItems(n).StockItem.Name
        .ProductGroupCode = oCHStockItems(n).StockItem.ProductGroup.Code
        .CurrentSellingPrice = oCHStockItems(n).StockItem.StockItemPrices(0).Price
        .NewSellingPrice = 0D
        .LastSellingPriceDate = oCHStockItems(n).LastSellingPriceDate
        .OriginalPrice = oCHStockItems(n).OriginalPrice
        End With

    _itemSellingPrices.Add(itemSellingPrice)
Next

最初我将oCHStockItems分配给Grid(它实际上是一个Sage 200网格)但是我似乎无法找到引用字段oCHStockItems(n).StockItem.StockItemPrices(0).Price的方法。

This is my grid

通常上述类型的语法有效。例如,如果我想引用股票代码,那么它将是StockItem.Code

StockItem.StockItemPrices(0).Price会生成一个值,但它不会显示在网格上。我和Sage记录了一张票,看看他们是否可以提供帮助。

然而,我认为他们会回来并说它无法完成,并且基于这个假设,我可以通过oStockItems循环并将属性分配给我预定义类的属性。那么考虑到这一点,有没有人建议加快这种过程?

1 个答案:

答案 0 :(得分:0)

Sage用一个解决方案回复了我:

首先:

AddHandler dgItems.Items.ItemAdded, AddressOf Items_ItemAdded

然后:

Private Sub Items_ItemAdded(ByVal sender As Object, ByVal args As Sage.Common.Controls.ListItemArgs)
    args.Item.SubItems(4).Value = oCHStockItems(args.Item.Index).StockItem.StockItemPrices(0).Price
End Sub

这会快速填充Grid上的项目。

我所做的就是将原始集合oCHStockItems分配给网格的.DataSource,方法Items_ItemAdded对其余内容进行排序。