我正在解决一个问题,我需要使用 C# 处理内存中的多维数据。我的要求类似于 OLAP 多维数据集,但没有那么复杂。例如,我不需要计算或聚合或类似的东西。我基本上想使用多维键来引用数据。例如:
var key = new Key();
key["Dim1"] = "DimValue1";
key["Dim2"] = "DimValue2";
key["Time"] = 1999;
DataSet[key] = 4.43434m;
它可以让我迭代数据集的值或切片。你在 C# 中遇到过这样的库吗?
最佳答案
这可能无法满足您的需求,但我发现一种处理多键数据集的简单方法是创建一个对象,其中包含您所有的“键”字段和“值”键(每个键的数量与您的数量一样多)需要),然后为每个键创建查找表达式。
例如:
class MyData
{
// Your keys
public string Dim1;
public string Dim2;
public string Time;
// Your values
public string Value;
}
将像这样被“索引”和检索:
// add all your data to a list or collection
var data = new List<MyData>();
// this provides the entry point to our dataset
var lookupDim1 = data.ToLookup(d => d.Dim1);
var lookupDim2 = data.ToLookup(d => d.Dim2);
var lookupTime = data.ToLookup(d => d.Time);
// sample retrievals
IEnumerable<MyData> sampleData1 = lookupDim1["DimValue1"];
var sampleData2 = lookupDim2["DimValue2"].Intersect( lookupTime["1999"] );
关于C# 立方体/多维数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2368896/