我正在尝试创建一个填充了员工及其信息的多维列表。
前:“简史密斯”“经理”“75,000”“达拉斯”
我现在的代码正在给我一个超出范围的例外。
这个bigROW[i].Add(ownName);
和bigROW[i][j+1] = newElement;
给了我错误。
//Begin making rows
for (int i = 0; i < fileRowCount; i++ )
{
string findOwners = "";
findOwners = file5Data.Rows[i][0].ToString();
if(DISTINCTOppOwners.Contains(findOwners))
{
//Find index of where owner is
int useIndex = 0;
useIndex = DISTINCTOppOwners.IndexOf(findOwners);
//Add their name to Multidimensional list
string ownName = DISTINCTOppOwners[useIndex].ToString();
//This line give me the ERROR
bigROW[i].Add(ownName);
for (int j = 0; j < fileColCount; j++)
{
Add Employee information to Multidimensional list
string newElement = file5Data.Rows[i][j].ToString();
if(ownName != newElement)
{
if(j ==0)
{
//Avoid adding their names to the list twice
bigROW[i][j+1] = newElement;
}
bigROW[i][j] = newElement;
}
}
}
}
我尝试将信息添加到名为“子列表”的列表中,然后将其添加到BigRow(多维列表)中,但是当我清除子列表以添加新行时,它会删除BigRow中的值。
答案 0 :(得分:0)
这是一个简单的例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication64
{
class Program
{
static void Main(string[] args)
{
string input =
"0,1,2,3,4,5,6,7,8,9\n" +
"10,11,12,13,14,15,16,17,18,19\n" +
"20,21,22,23,24,25,26,27,28,29\n" +
"30,31,32,33,34,35,36,37,38,39\n" +
"40,41,42,43,44,45,46,47,48,49\n";
List<List<int>> output = new List<List<int>>();
StringReader reader = new StringReader(input);
string inputline = "";
while ((inputline = reader.ReadLine()) != null)
{
List<int> numbers = inputline.Split(new char[] { ',' }).Select(x => int.Parse(x)).ToList();
output.Add(numbers);
}
}
}
}
答案 1 :(得分:0)
我尝试将信息添加到名为“子列表”的列表中,然后将其添加到BigRow(多维列表)中,但是当我清除子列表以添加新行时,它会删除BigRow中的值。
将对象添加到列表时,存储的是引用,而不是对象的内容。您应该每次都创建一个新的sublist
,而不是清除List
。否则,您有一个外部列表,其中包含同一列表的多个副本。
有关此示例,请参阅上面的jdweng's answer。在他的代码中,ToList
调用会为每一行创建一个新的numbers
列表,以便每行都有自己的List
个数字。