0

我正在读取一个包含数据的本地 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);
                  /*I'm using size as a counter to add to the slot on the array.*/
                  empid[size] = row[0].Remove(0,1);
                  // here I receive 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

4 回答 4

2

你的问题是声明EmployeeName,它是一个List数组string

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

将其更改为:

var EmployeeName = new List<string>();

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

于 2012-06-29T02:00:27.067 回答
2

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

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

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

您应该将 EmployeeName 声明为 a List<string>,使用如下行:

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

或者

var EmployeeName = new List<string>();
于 2012-06-29T02:00:36.307 回答
2

EmployeeName是一个List<string[]>所以你必须写:

EmployeeName.Add(row);

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

row=line.Split(New String() {","},
                     StringSplitOptions.RemoveEmptyEntries);
于 2012-06-29T02:00:49.010 回答
1

他们都是List's of String Array's

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类型会解决您的问题

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>();

var str = "My String";

EmployeeName.Add(str);
于 2012-06-29T02:07:01.930 回答