现在我有一个2d字符串数组来保存我的数据:
//...find number of rows needed...
string[,] data = new string[totalRows, 12]; //row / column
有效。但是现在我想为我的程序添加更多功能,它不再是我的好处,因为连接2d数组,虽然可行,但是打开了其他问题:直到这一点我才将行数存储在类变量中,因为我没有不需要一次维持两个。可以说我知道列总是一样的,我可以将长度除以得到行并写一个方法来组合它们。
我觉得有更好的方法来解决这个问题。我对“更新”的东西缺乏了解,但我相信其中一个比其他人更能满足这个要求。因此,在我跳入并创建List<List<String>> data = new List<List<String>>();
或其他同样奇怪的东西之前,我希望其他人的意见更有经验。
我不需要任何排序,删除,插入等功能。我只需要它来保存数据;现在我需要能够相对容易地去data += data2
- 无论如何都要做到这一点。 data.Length
(仅给出外部长度)也非常有用。
最好的方法是什么?
如果您想了解更多信息,请与我们联系。感谢。
基于答案的更多信息:
数据基本上是电子表格格式。即
[['1234-56789-12345', 'screwdriver', '', 'ea', '1', '', '', '', '', '', '', ''],
[['1234-56789-54321', 'wrench', '', 'ea', '1', '2', '3', '', '', '', '', '']]
我不想处理弄清楚信息描述的内容 - 我不在乎。我需要相对于其他一切的位置。
更多信息:
用法是作为一个xml文件和另一个xml文件之间的保留槽。刚刚意识到那些xlst的东西可能是我最初问题的另一个解决方案,但是呃。也许在另一个生命中。 (一切正常......就像我说的那样,添加功能。如果它有效,为什么打破它?)
答案 0 :(得分:2)
我认为值得一提的问题是,您的数据列可以更好地用一个对象来表示,该对象解释了每个列所持有的内容。例如,而不是
row 1 => { "Jane", "Smith", "1 Rocket Ave", "Houston", "TX" }
你有
new Person { FirstName = "Jane", LastName = "Smith", /* etc. */ }
然后,您的2D数组将成为这些新的Person
对象的一维集合,这些对象在代码中更易于推理。
List<Person> people = ...
// vs.
string[,] people = ...
答案 1 :(得分:1)
这取决于'12'的硬度或灵活度。
我认为List<List<string>>
是一种灵活的方法。
List<string[]>
会固定它(使用空列可能更容易),同时仍然可以灵活地控制行数。像锯齿状阵列一样,你需要用for循环设置它:
List<string[]> data = new List<string[]>();
for (int i = 0; i < desiredRows; i++)
data.Add(new string[12]);
data[1][1] = "Screwdriver";
答案 2 :(得分:0)
为什么不使用Dictionary?
示例here。
答案 3 :(得分:0)
Dictionary<string,List<string>>
或
Dictionary<int,List<string>>
或
Dictionary<int,string[]>
等
这取决于你想要使用什么类型的密钥(名称的字符串,id的int等)。
如果您不需要通过某种键进行查找,List<List<string>>
没有任何问题。