我有一个表,有2列clmAge
和clmPrice
,如
Age Price
1 , 100
2 , 100
3 , 150
4 , 150
5 , 100
6 , 100
7 , 100
不同年龄的价格可能是相同的,我需要所有连续年龄的最小和最大年龄具有相同的价格。我需要对数据进行分组,这样我的结果就像:
1-2 , 100
3-4 , 150
5-7 , 100
试试这个
Imports System.Data
Module Module1
Sub Main()
Dim dt As New DataTable()
dt.Columns.Add("clmAge", GetType(Integer))
dt.Columns.Add("clmPrice", GetType(Integer))
dt.Rows.Add(New Object() {1, 100})
dt.Rows.Add(New Object() {2, 100})
dt.Rows.Add(New Object() {3, 150})
dt.Rows.Add(New Object() {4, 150})
dt.Rows.Add(New Object() {5, 100})
dt.Rows.Add(New Object() {6, 100})
dt.Rows.Add(New Object() {7, 100})
Dim oldPrice = 0
Dim groups As New List(Of Group)
Dim newGroup As Group = Nothing
For Each row As DataRow In dt.AsEnumerable()
If row("clmPrice") <> oldPrice Then
newGroup = New Group()
groups.Add(newGroup)
newGroup.minAge = row("clmAge")
newGroup.price = row("clmPrice")
End If
newGroup.maxAge = row("clmAge")
oldPrice = row("clmPrice")
Next row
End Sub
End Module
Public Class Group
Public minAge As Integer
Public maxAge As Integer
Public price As Integer
End Class