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] は配列の最初の文字列であるため、文字列の配列を追加することを期待しているリストに文字列を追加しようとしています。

List<string>次のような行を使用して、EmployeeName を として宣言するだけです。

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

それらのすべてはListString 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型に変更すると問題が解決します

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 に答える