在 C# 中将结构类型存储在列表或字典中
Posted
技术标签:
【中文标题】在 C# 中将结构类型存储在列表或字典中【英文标题】:storing struct type in a list or dictionary in c# 【发布时间】:2021-08-09 16:30:32 【问题描述】:我在 C# 中有现有的遗留代码,我们将结构类型存储在 memlib 类型中,然后创建 3 个键以更快地访问 memlib 结构。请看下面的快照:
public struct gtBuildRecType : ICloneable
public double dParentLocCd; // 8 bytes : Key1
public double dLocationCd; // 8 bytes : Key2
public int lHierLevel; // 4 bytes : Key3
public int lSequence;
public int lDupChecked;
public int nStatusInd;
Memlib 记录和 3 个键的定义如下:
static public Memlib<gtBuildRecType> gnBuildTable = null;
static public Key<gtBuildRecType> gnBuildParentCdKey = null;
static public Key<gtBuildRecType> gnBuildLocCdKey = null;
static public Key<gtBuildRecType> gnBuildHierLevelKey = null;
现在,gnBuildTable Memlib 可以包含数千条结构记录,我们可以使用 3 个键中的任何一个,即 gnBuildParentCdKey、gnBuildLocCdKey、gnBuildHierLevelKey 来加快访问速度。例如:
gtBuildRecType uTempRec = gtBuildRecType.CreateInstance();
MemLibStatus nReturn = gnBuildTable.ReadEqual(gnBuildParentCdKey, ref uTempRec);
这段代码将立即填充 gnBuildTable 中的 uTempRec,其中 gnBuildParentCdKey 匹配 gnBuildTable 中的结构记录strong> 然后我们可以相应地更新 uTempRec 并保存更改。
现在,我的问题是:我想用 List 或 Dictionary 替换 Memlib。我想将这数千条结构记录存储在 List 或 Dictionary 中,但我应该如何使用 List 或 Dictionary 实现 3 键方法,以便我的搜索变得更快????我从列表开始(不使用任何键),但在中途我遇到了在列表中搜索准确结构记录的问题。
我最初也尝试过使用单键的字典方法,但我也遇到了问题。
提前致谢:-)
【问题讨论】:
您如何存储数据?最好将存储保留为结构,然后在读取文件后创建字典。 @jdweng 从后端检索数据,返回的每一行都存储在 struct 中,而 struct 又存储在 Memlib 中。即使创建字典也会导致问题,因为现有设计有 3 个键,而字典最多只有 1 个键。 如果问题描述了您实际尝试做的事情、您尝试过的事情、结果以及您的期望会更有用。目前您正在描述您是如何使用库的,因此如果不熟悉确切的库就很难回答。 我会不理会所有内容,只需添加字典以加快进程。您应该有一个 List好吧,为了解决这个问题,我可以使用多索引 3rd 方库,也可以通过 DataTable 工作。将结构体的字段作为数据表中的列。
【讨论】:
以上是关于在 C# 中将结构类型存储在列表或字典中的主要内容,如果未能解决你的问题,请参考以下文章