用字符串数组填充数据表

populate datatable with arrays of strings

如何用字符串数组填充此数据表?我正在使用此模板,但我只能添加硬编码的数据...我有一个字符串 [] 值,其中包含我的数据,应该添加到数据 table。我认为这很容易,但我看不到。我一直在尝试遍历它,但这似乎不起作用?认为我错过了关键的一步。 我在这里创建了我的数据table :

 DataTable dt = new DataTable() { TableName = "MBR" };

向其中添加列

string[] columns = new string [l];

        for (int i = 0; i < l; i++)
        {
            columns[i] = tags[i];
        }

        for (int i = 0; i < timeStamps.Count(); i++)
        {
            foreach (var item in tagCollection)
            {
                if (timeStamps[i].Date == item.time)
                {
                    Console.WriteLine(item.time + " " + item.name );
                }
            }
        }
  dt.Columns.AddRange(columns.Select(c => new DataColumn(c.ToString())).ToArray());

我在我的同事正在使用的模板中使用了这个,我们需要在此处提供数据

   var rows = new string[][]
             {
                 new string[] {"1", "2", "false" },
                 new string[] { "test", "10000", "19.9" },
              };
 foreach (var row in rows)
            {
                dt.Rows.Add(row);
            }

            //Convert datatable to dataset and add it to the workbook as worksheet
            ds.Tables.Add(dt);
            workbook.Worksheets.Add(ds);

我有很多列,比如 500+。我需要向每一列添加一条从我的字符串 [] 中获取的数据。它可以包含 10 条或 500 条以上的记录。我需要将每条记录添加到一行中。我的专栏已经在做这件事了。我只需要一种方法将多个数组添加到 table

以下是您可以如何从人员文件中填充数据table:

var people = new DataTable();
people.Columns.Add("Name");//string
people.Columns.Add("Age", typeof(int));
people.Columns.Add("HireDate", typeof(DateTime));
people.Columns.Add("IsManager", typeof(bool));

foreach(var line in File.ReadLines("people.csv")){
  var bits = line.Split(',');
  dt.Rows.Add(new object[]{ 
    bits[0], //Name
    int.Parse(bits[1]), //Age
    DateTime.Parse(bits[2]), //HireDate
    bool.Parse(bits[3]) //IsManager
  });
}

当然,如果您从 CSV 中读取数据,最好使用像 Csvhelper 这样的库 - 它可以直接读入 DataTables,并且比这个例子复杂得多。这只是为了展示“制作数据table,添加列,通过为列提供值来添加行”的过程

最好为此创建一个强类型数据table:

  • 向您的项目添加一个新的 DataSet 类型的文件并为其取一个好名字
  • 打开它,右击表面,选择添加数据表,给它一个合理的名字
  • 右键单击 table,选择添加列..添加列并设置其名称、数据类型、默认值等...
  • 重复直到完成所有列

除了创建 table 的实例外,在您的代码中使用它与上面的大部分相同。它是一个内部 class,因此您也可以使用数据集的名称创建它:

var dt = new YourDataSetNameHere.YourDataTableNameHere_DataTable();

//the columns are already added, you don't need to add them

foreach(var line in ...){
  ...

  dt.Add_YourDataTableNameHere_Row(
    bits[0], //Name
    int.Parse(bits[1]), //Age
    DateTime.Parse(bits[2]), //HireDate
    bool.Parse(bits[3]) //IsManager
  );
}

它们比常规的弱类型数据好用很多tables

这对我有用:

DataTable dt = new DataTable() { TableName = "MBR" };

dt.Columns.Add(new DataColumn("A", typeof(string)));
dt.Columns.Add(new DataColumn("B", typeof(string)));
dt.Columns.Add(new DataColumn("C", typeof(string)));

var rows = new string[][]
{
    new string[] {"1", "2", "false" },
    new string[] { "test", "10000", "19.9" },
};

foreach (var row in rows)
{
    dt.Rows.Add(row);
}

这给了我: