提高List的性能.按标准计数

本文关键字:性能 标准计 List byte 提高 | 更新日期: 2023-09-27 18:08:38

我有一个List<byte[]>,我将信息加载到表示矩阵的地方。数组中的每个byte代表它所属的每个条件的段。因此,可以有多个标准,如年龄,收入等,每个标准将被分割。

一个例子如何这个字节数组可能看起来在十六进制是0x0D1A0006

我在带有控件的表单上表示矩阵,这些控件是根据有多少个Criteria项以及每个Criteria有多少个segment而创建的,并且每个控件都知道它属于哪个标准,以及标准的哪个部分。

然后循环遍历控件并使用lambda表达式FilteredData.Count(x => x[curCriteria] == curSegment)来确定列表中与curCriteriacurSegment对应的所有项的计数。

是否有一种方法可以通过不循环控制来获得计数,而是为我返回特定条件下的每段计数?比如:

int[] = FilteredData.Count(x => x[curSegment]).ToArray<int>()

这是一些测试数据。

0x0E0C060E0003070C0203000A0B090B00
0x010C060E0004020C020309090B010B00
0x050C060E0001070C020500080B080B00
0x000C060E0004060C020D090C01040B00
0x070C080E0003040C0005010D0B0D0B00
0x050C060E0001050C020C090B0B030B00
0x0D0C060E0003080C0203030A0D080B00
0x030C060E0004040C02010008070A0B00
0x0A0C060E0004050C020C020B0B0C0B00
0x050C020E0001020C01050A060B020B00
0x050C060E0003080C020D000C08030B00
0x040C060E0000050C020D030C0B060000
0x000C030E0007040C070709050C090B00

我的矩阵基本上是15个标准,布局如下:

Criteria 1, 15 Segments
Criteria 2, 13 Segments
Criteria 3, 10 Segments
Criteria 4, 15 Segments
Criteria 5, 9 Segments
Criteria 6, 8 Segments
Criteria 7, 10 Segments
Criteria 8, 14 Segments
Criteria 9, 15 Segments
Criteria 10, 15 Segments
Criteria 11, 11 Segments
Criteria 12, 15 Segments
Criteria 13, 14 Segments
Criteria 14, 15 Segments
Criteria 15, 13 Segments

可以有30-40个标准,每个标准最多64个段

提高List<byte[]>的性能.按标准计数

也许这是一个非常简单的解决方案,但是您可以将项目与"所有类型的项目列表"一起存储在单独的列表中,然后访问单独列表中的Count属性以获得特定类型项目的计数。

换句话说:不是按条件查询计数,而是按条件存储数据。