根据找到的数据修剪三维阵列请求

pun*_*eet 6 c# arrays multidimensional-array data-structures

我有一个服务,提取以下数据

Func(List<symbols>,List<fields>,StartDate,EndDate)
Run Code Online (Sandbox Code Playgroud)

它将返回一个3维数组值.

Sym1   field1 field2 field3
Sym2   field1 field2 field3
    Date1
     Date2
      Date3
Run Code Online (Sandbox Code Playgroud)

即x轴是字段,y轴是符号,z轴是日期.

我还以字典的格式缓存了一些上述值(我之前提到的)

<Date<Symbol<field,value>>>
Run Code Online (Sandbox Code Playgroud)

该服务根据将返回的每个数据点收取费用.因此,如果我们有3个符号,4个字段和2个数据日期,那么我们将收取24个点的费用.

我需要将原来较大的请求分解为多个较小的请求,仅用于缓存中未找到的数据.

例如.如果我有5个符号A,B,C,D,E和4个字段F1,F2,F3,F4的原始请求3个日期D1,D2,D3.

A,B,C,D,E     F1,F2,F3,F4     D1,D2
Run Code Online (Sandbox Code Playgroud)

假设在缓存中我已经拥有以下字段的数据

B,F2,D2
C,F4,D1
Run Code Online (Sandbox Code Playgroud)

然后,如果优化和破坏,我将进行的后续请求将是

Request1 A,B,C,D   F1,F3    D1,D2
Request2 A,D       F2,F4    D1,D2
Request3 B         F2,F4    D1
Request4 B         F4       D2
Request5 C         F2,F4    D2
Request6 C         F2       D1
Run Code Online (Sandbox Code Playgroud)

是否有一些标准的方法将上述划分为较小的请求/ 3D阵列.我能做到这一点的最佳方式是什么?什么类型的数据结构将满足我的需求?

小智 2

建议的方法:

  1. 在调用数据获取 API 服务之前实例化结果数据结构

  2. 使用缓存中可用的数据填充结果结构。

  3. 为未填充的值调用外部服务/API(使用结果结构)。

瞧,你完成了。对于第三步,您可以使用 Linq 找出需要填充的空槽。