首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#多维数据集/多维数据集

c#多维数据集/多维数据集
EN

Stack Overflow用户
提问于 2010-03-03 13:06:59
回答 3查看 2.9K关注 0票数 2

我正在解决一个问题,我需要使用C#处理内存中的多维数据。我的需求类似于OLAP多维数据集,但并不复杂。例如,我不需要计算或聚合或类似的东西。我基本上喜欢使用多维的键来引用数据。例如:

代码语言:javascript
复制
var key = new Key();
key["Dim1"] = "DimValue1";
key["Dim2"] = "DimValue2";
key["Time"] = 1999;
DataSet[key] = 4.43434m;

它将允许我对数据集的值或切片进行迭代。你在C#中遇到过这样的库吗?

EN

回答 3

Stack Overflow用户

发布于 2010-03-03 14:29:18

这可能不能满足你的需要,但我发现了一个处理多键数据集的简单方法是创建一个对象,其中包含所有的“key”字段和“value”键(每一个都是你需要的),然后为你的每个键创建Lookup表达式。

例如:

代码语言:javascript
复制
class MyData
{
    // Your keys
    public string Dim1;
    public string Dim2;
    public string Time;

    // Your values
    public string Value;
}

将被‘索引’并像这样被检索:

代码语言:javascript
复制
// 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"] );
票数 1
EN

Stack Overflow用户

发布于 2010-03-03 13:14:00

您可以创建一个字典,其中键类型是您声明的结构。这不会让你自动迭代切片,尽管你可以通过过滤来实现。

票数 0
EN

Stack Overflow用户

发布于 2010-03-04 13:00:57

我认为像MongoDB和Redis这样的键/值存储接近于我所需要的。然而,我并不是百分之百确定。因为我不关心持久性,所以像Redis这样的内存故事更合适。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2368896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档