我有一个数据表填充了以下值:
Volume | Count
100 | 2
115 | 3
165 | 1
200 | 10
我有一个范围列表包含如下值:{50,100,150,200} 我想计算音量范围如下:从50 - 100,100 - 150.所以我希望结果如下:
Volume | Count
50-100 | 2
100-150 | 5
150-200 | 11
这就是我所做的:
Dim tmpDt as New DataTable
Dim tmpDt = New DataTable()
tmpDt.Columns.Add("Volume")
tmpDt.Columns.Add("Count")
Dim dr As DataRow
dr = tmpDt.NewRow
dr("Volume") = 100
dr("Count") = 2
tmpDt.Rows.Add(dr)
dr = tmpDt.NewRow
dr("Volume") = 115
dr("Count") = 3
tmpDt.Rows.Add(dr)
dr = tmpDt.NewRow
dr("Volume") = 165
dr("Count") = 1
tmpDt.Rows.Add(dr)
dr = tmpDt.NewRow
dr("Volume") = 200
dr("Count") = 10
tmpDt.Rows.Add(dr)
Dim ranges As List(Of Integer) = New List(Of Integer) From {50, 100, 150, 200}
Dim result = ranges.Select(Function(r) New With {Key.Volume = r, .Count = tmpDt.AsEnumerable.Where(Function(x) x.Field(Of Decimal)("Volume") >= r).Count()})
linq的结果给出了正确的计数,但不是我预期的范围。 我得到的结果是下面哪个不是我想要的
Volume | Count
50 | 16
100 | 16
150 | 11
我想知道这是否可以使用Linq?
由于
答案 0 :(得分:0)
我明白了。这是一个显示范围和计数的完整查询:
Dim result = ranges.Select(Function(r) New With {Key .ADTVolume = r, _ .Count = tmpDt.AsEnumerable.Where(Function(x) x.Field(Of Decimal)("ADTVolume") >= r _ And x.Field(Of Decimal)("ADTVolume") <= ranges.Where(Function(r2) r2 > r).FirstOrDefault).Count()})