我有一个看起来像以下的数据表
╔═══════════════╦═══════════════╦═══════════════╗
║ 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 ║ ║
╚═══════════════╩═══════════════╩═══════════════╝
这只是一个例子Datatable和Real Datatable有更复杂的名称和颜色,你可以看到现在使用LINQ有不同颜色的simular产品我想让Datatable看起来像下面这样
╔═══════════════╦═══════════════╦═══════════════╗
║ 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的新手,我想知道这样做的最佳方法是什么,我正在使用的Datatable有大约112000条记录
如此苛刻,我需要将相同价格的产品添加到一个组中,并在每个产品旁边添加一个数字,指向该组的点数
答案 0 :(得分:1)
只需按价格对行进行分组,然后循环显示将组中每行的组字段设置为组编号。
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