Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储此类数据的数据结构是什么_C#_Winforms_.net 3.5_Collections_Dictionary - Fatal编程技术网

C# 存储此类数据的数据结构是什么

C# 存储此类数据的数据结构是什么,c#,winforms,.net-3.5,collections,dictionary,C#,Winforms,.net 3.5,Collections,Dictionary,例如,我有四个电子表格,我想存储如下内容: Rows 1,2,3 from spread1, Rows 1,2 from spread2, Rows 3,4 from spread3, Row 3 from spread4 我想我应该使用字典,但MSDN说关键应该是uniqe。 那么,正确的做法是什么呢 注:我使用的是.NET3.5,不能使用元组。 谢谢制作一个自定义类并将其用作密钥。包括创建唯一键(电子表格名称和行列表)所需的所有字段,然后适当地覆盖Equals和GetHashCod

例如,我有四个电子表格,我想存储如下内容:

Rows 1,2,3 from spread1, 
Rows 1,2 from spread2,  
Rows 3,4 from spread3, 
Row 3 from spread4
我想我应该使用字典,但MSDN说关键应该是uniqe。 那么,正确的做法是什么呢

注:我使用的是.NET3.5,不能使用元组。
谢谢

制作一个自定义类并将其用作密钥。包括创建唯一键(电子表格名称和行列表)所需的所有字段,然后适当地覆盖Equals和GetHashCode。

创建自定义类并将其用作键。包括创建唯一键(电子表格名称和行列表)所需的所有字段,然后适当地覆盖Equals和GetHashCode。

对我来说,这听起来像是列表列表,
list
。将其封装在自定义类中以提供所需的语义可能会很好(如果没有,记住哪个列表中的内容可能会变得复杂,等等;并且可能需要在每个子列表上添加一些额外的元数据)。

对我来说,这听起来像是一个列表列表,
list
。最好将其封装在自定义类中,以提供所需的语义(如果没有,记住列表中的内容可能会变得复杂,等等;并且可能需要在每个子列表上添加一些额外的元数据)。

快速而明确的解决方案:

IDictionary<string, IList<int>> map = new Dictionary<string, IList<int>>
{
   { "spread1", new List<int> { 1, 2, 3 } },
   { "spread2", new List<int> { 1, 2 } },
   { "spread3", new List<int> { 3, 4 } },
   { "spread5", new List<int> { 3 } }
}
IDictionary map=新字典
{
{“spread1”,新列表{1,2,3},
{“spread2”,新列表{1,2},
{“spread3”,新列表{3,4},
{“spread5”,新列表{3}
}

如果您需要某种灵活性,请按照其他人的建议,通过自定义类抽象排列和相关行。

快速而明确的解决方案:

IDictionary<string, IList<int>> map = new Dictionary<string, IList<int>>
{
   { "spread1", new List<int> { 1, 2, 3 } },
   { "spread2", new List<int> { 1, 2 } },
   { "spread3", new List<int> { 3, 4 } },
   { "spread5", new List<int> { 3 } }
}
IDictionary map=新字典
{
{“spread1”,新列表{1,2,3},
{“spread2”,新列表{1,2},
{“spread3”,新列表{3,4},
{“spread5”,新列表{3}
}

如果您需要某种灵活性,可以像其他人建议的那样,通过自定义类抽象排列和相关行。

是否也要处理范围?i、 e.第1行到第56行,而不必列出所有56行的编号?是否也要处理范围?i、 e.第1行到第56行,而不必列出所有56行的编号?有没有办法为此创建集合集合?而不是一个新的类…当前代码将它作为全局变量在整个代码中使用。有没有办法为此创建一个集合集合?而不是一个新的类…当前的代码正在使用它的全局变量的所有代码。看起来像我需要的。但对我来说,还有一个问题是,这里你是硬编码1,2,3…但在实际代码中,例如,这是在一个方法调用中,每次调用这个方法时,我们都会添加其中一个值,例如,我们将值2添加到spread1 dictionary…下次我们将值4添加到spread3 dictionary…但在示例代码中,我们使用了新的,那么,怎样才能保持以前的价值并增加它们呢?看起来正是我所需要的。但对我来说,还有一个问题是,这里你是硬编码1,2,3…但在实际代码中,例如,这是在一个方法调用中,每次调用这个方法时,我们都会添加其中一个值,例如,我们将值2添加到spread1 dictionary…下次我们将值4添加到spread3 dictionary…但在示例代码中,我们使用了新的,那么,如何仍然保留以前的值并添加到它们中呢?您能给我一个列表声明中的示例代码吗?您能给我一个列表声明中的示例代码吗?