LINQ 分组和分组行编辑



我有一个数据表,如下所示

╔═══════════════╦═══════════════╦═══════════════╗
║ Product Name  ║ Product Price ║ Product Group ║
╠═══════════════╬═══════════════╬═══════════════╣
║ Skirt Red     ║            99 ║               ║
║ Jeans Blue    ║            49 ║               ║
║ Jeans Black   ║            49 ║               ║
║ Skirt Blue    ║            99 ║               ║
║ T-shirt White ║            20 ║               ║
║ T-shirt Green ║            20 ║               ║
║ Jeans Grey    ║            49 ║               ║
╚═══════════════╩═══════════════╩═══════════════╝

这只是一个示例数据表,Real Datatable 具有更复杂的名称和颜色,正如您所看到的,现在使用 LINQ 有不同颜色的模拟产品,我想使数据表看起来像下面这样

╔═══════════════╦═══════════════╦═══════════════╗
║ Product Name  ║ Product Price ║ Product Group ║
╠═══════════════╬═══════════════╬═══════════════╣
║ Skirt Red     ║            99 ║             1 ║
║ Jeans Blue    ║            49 ║             2 ║
║ Jeans Black   ║            49 ║             2 ║
║ Skirt Blue    ║            99 ║             1 ║
║ T-shirt White ║            20 ║             3 ║
║ T-shirt Green ║            20 ║             3 ║
║ Jeans Grey    ║            49 ║             2 ║
╚═══════════════╩═══════════════╩═══════════════╝

什么定义了组? 价格是一样的,名字也无关紧要。

我是 LINQ 的新手,我想知道这样做的最佳方法是什么,我正在使用的数据表有大约 112000 条记录

所以基本上,我需要将价格相同的产品添加到一个组中,并在每个产品旁边添加一个数字,将点添加到组中

只需按价格对行进行分组,然后循环遍历将组中每行的组字段设置为组号的组。

Dim query =
    From row in table.AsEnumerable
    Group row By Price = row.Field(Of Integer)("Product Price") Into ProductGroups = Group
Dim grpNumber = 1
For Each grp In query
    For Each row In grp.ProductGroups
        row.SetField("Product Group", grpNumber)
    Next
    grpNumber += 1
Next

最新更新