【问题标题】:Searching a static array on Multiple Indexes C#在多个索引 C# 上搜索静态数组
【发布时间】:2015-03-27 19:53:50
【问题描述】:

这个问题可能不仅仅是要使用什么集合,而是一旦定义了数据,最好使用什么方法来访问数据。我是 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 个条目。我的问题是这个。我一直在学习如何使用字典按索引进行搜索。但这似乎只允许在一个索引上进行搜索。我需要的是能够通过基于任何属性进行搜索并获取匹配对象的其他成员属性中的值的返回集合来访问这种数据(在数组中)。

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

我刚刚浏览完字典,但它们似乎只适用于单个索引。我要么看错了,要么看使用错误的类来做到这一点。您可以将我推向任何方向建议吗?当我应该使用刀时,感觉就像我正在尝试使用锤子..

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

谢谢

【问题讨论】:

  • 能否将内容存储在数据库表中,然后使用 LINQ 访问每一列? -- 一个想法
  • 第一件事!停止使用匈牙利符号!

标签: c# arrays linq dictionary collections


【解决方案1】:

为什么不使用 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

【讨论】:

  • 谢谢!对于您为我当前的问题和 LINQ 链接提供的示例代码......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 2012-01-25
相关资源
最近更新 更多