无法将字符串添加到字符串c#列表中

时间:2012-06-29 01:56:31

标签: c#

大家好我正在读一个有数据的本地csv文件,我最终会用来加载到数据库中。我的问题本质上是简单的,但我似乎无法掌握这个概念。以下是我的代码。非常简单的东西。

      static void loadTables() {
        int size = new int();
        string[] empid = new string[0];

        //string[] empid = new string();
        List<string[]> EmployeeName = new List<string[]>();
        List<string[]> EmployeeId = new List<string[]>();
        List<string[]> Group = new List<string[]>();
        List<string[]> Org = new List<string[]>();
        List<string[]> Fund = new List<string[]>();
        try {
            using (StreamReader readFile = new StreamReader("C:\\temp\\groupFundOrgReport.csv")) 
            {
             string line;
              string[] row;
              size = 0;
              while ((line = readFile.ReadLine()) != null)
              {
                  row = line.Split(',');
                  /*resize the array up by 1*/
                  Array.Resize(ref empid,empid.Length+1);
                  /*im using size as a counter to add to the slot on the array.*/
                  empid[size] = row[0].Remove(0,1);
                  // here i reciever error (the best overload match of system generic list?...etc) 
                  EmployeeName.Add(row[0]);
                  size++;

              }

             }
           }

        catch(Exception e){

            Console.WriteLine(e);

        }




    }

我有一个字符串列表但是任何向它添加字符串的尝试都会给我一个错误。换句话说,如果我尝试这样做 EmployeeName.Add(row [0] .ToString); 我收到错误。但是,如果我评论该线路,我可以使用旧的时尚阵列。我真的很喜欢使用列表,但我似乎无法传递我想要的值。有人可以指出我正确的方向。

提前致谢 米格尔

4 个答案:

答案 0 :(得分:2)

您的问题是EmployeeName的声明,它是Liststring数组:

List<string[]> EmployeeName = new List<string[]>();

将其更改为:

var EmployeeName = new List<string>();

或者,相应地使用List<string[]> ......

答案 1 :(得分:2)

我想从您的代码中可以看出员工姓名是CSV文件的第一个字段。

您已将EmployeeName声明为字符串List<string[]>数组的列表,而不是字符串列表List<string>

Row [0]是数组中的第一个字符串,因此您尝试将字符串添加到期望添加字符串数组的列表中。

您应该使用类似以下的行声明EmployeeName为List<string>

List<string> EmployeeName = new List<string>();

var EmployeeName = new List<string>();

答案 2 :(得分:2)

EmployeeNameList<string[]>所以你必须写:

EmployeeName.Add(row);

要在拆分字符串时删除空条目,请使用:

row=line.Split(New String() {","},
                     StringSplitOptions.RemoveEmptyEntries);

答案 3 :(得分:1)

所有这些都是List的{​​{1}}个

String Array

只有你可以添加的变量就像

List<string[]> EmployeeName = new List<string[]>(); 
List<string[]> EmployeeId = new List<string[]>(); 
List<string[]> Group = new List<string[]>(); 
List<string[]> Org = new List<string[]>(); 
List<string[]> Fund = new List<string[]>();

然后你可以打电话

//Define array of strings
var strArr = new string[] {"abc", "xyz"};

虽然将EmployeeName.Add(strArr); 泛型类型更改为List类型可以解决您的问题

string