在多个索引C#上搜索静态数组

时间:2015-01-28 19:03:08

标签: c# arrays linq dictionary collections

这个问题可能不仅仅是使用什么样的集合,而是在定义数据后最好使用哪些方法来访问数据。我是C#和.NET的相对新手,但我经历了几个简单的项目,需要一些方法来搜索较小的静态数据集。具体来说,我有一个与此类似的类:

public class rlsSoftwareVersions
{
    public double   dReleaseNum { get; set; }
    public string   strReleaseName { get; set; }
    public long     lConfigSchema { get; set; }
    public long     lProgramSchema { get; set; }
}

我们有一个直接的数组,这些类对象的定义如下:

static rlsSoftwareVersions[] rlsSoftware = {   
    new rlsSoftwareVersions { dReleaseNum = 4.0, strReleaseName = "Chronos", lConfigSchema = 0x04, lProgramSchema = 0x0DB4 },
    new rlsSoftwareVersions { dReleaseNum = 4.1, strReleaseName = "Hera",   lConfigSchema = 0x06, lProgramSchema = 0x0DB5 },
    new rlsSoftwareVersions { dReleaseNum = 5.0, strReleaseName = "Zeus",   lConfigSchema = 0x0C, lProgramSchema = 0x0DB5 },
    new rlsSoftwareVersions { dReleaseNum = 5.1, strReleaseName = "Poseidon",lConfigSchema = 0x0C, lProgramSchema = 0x0DBB }
    .. .. .. .. 
    .. .. .. .. 
    .. .. .. .. 
};

该数组扩展了大约30个条目。我的问题是这个。我一直在学习如何使用Dictionaries来按索引进行搜索。但这似乎只允许搜索一个索引。我需要的是能够通过基于任何属性进行搜索并获得匹配对象的其他成员属性中的值的返回集合来访问此类数据(在数组中)。

例如,在一种情况下,我想获取lConfigSchema的值集合,当我将dReleaseNum属性与4.0匹配时返回该值。然后,下次我想要dReleaseNum的值集合时,lConfigSchema属性等于0x0C。我想基本上这样查看任何属性并获得任何其他相关属性的结果(Collection)。

我刚刚完成浏览字典,但它们似乎只能使用单个索引。我要么看错了,要么用错误的类来做这件事。任何方向建议你可以推动我走向?当我应该使用刀子时感觉就像是在试图使用锤子。

警告:我无法为此创建数据库。它需要全部在没有外部数据库或文件的单个结果可执行文件中。这就是我创建内部静态数组的原因......

由于

1 个答案:

答案 0 :(得分:2)

为什么不使用LINQ?

IEnumerable<rlsSoftwareVersions> result = rlsSoftwareVersions.Where(item => item.dReleaseNumber == 4.0);

foreach(var rlsSoftwareVersion in result)
{
    // do something
} 

以下是一些有用的示例:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b