将List <string>转换为c#</string>中的DataRow

时间:2014-01-24 04:55:19

标签: c# arrays datatable datarow

我有一个字符串列表,我需要将其转换为Datarow。 我试过了

toReturn.Add("UserID");
toReturn.Add("UserName");
DataRow row = null;
row.ItemArray=toreturn.ToArray();

这给我一个例外

Object reference not set to an instance of an object.

所以我尝试了

DataRow Row=new DataRow();

这也是不允许的。可以帮助我。

6 个答案:

答案 0 :(得分:8)

DataRow只能与DataTable一起存在。

使用适当的列创建DataTable,然后调用table.Rows.Add(list.ToArray())

但是,您可能不应该首先使用DataRow

答案 1 :(得分:3)

您可以在DataRow内创建DataTable对象,就像SLaks指出的那样。 无论原因是什么......

DataTable dataTable = new DataTable();
dataTable.Columns.Add("Test");

foreach(string x in array)
{
    DataRow dataRow = dataTable.NewRow();   
    dataRow["Test"] = x;   
    dataTable.Rows.Add(dataRow);               
}

现在,您可以使用DataTable对象执行任何操作...

答案 2 :(得分:0)

您可能需要NewRow()来创建新的DataRow

DataRow row = _dataTable.NewRow();

检查代码中的_dataTable

答案 3 :(得分:0)

试试这个,它为我工作!!!

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace testApp

{

 class Program

 {

    static void Main(string[] args)

    {
        List<string> toReturn = new List<string>();

        toReturn.Add("UserID");
        toReturn.Add("UserName");

        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("UserID"));
        dt.Columns.Add(new DataColumn("UserName"));

        DataRow row = dt.NewRow();
        row.ItemArray = toReturn.ToArray();
        dt.Rows.Add(row);
    }
 }
}

答案 4 :(得分:0)

string [] array=new string[length]{1,2,3,...}

DataTable dt=new DataTable();

DataRow toInsert = dt.NewRow();

toInsert.ItemArray = array;

dt.Rows.InsertAt(toInsert, desiredrownumber);

答案 5 :(得分:0)

如果您的List<string[]>将列表的第一行作为标题,则可以执行以下操作:

var header = records.Select(it => it).First().ToList();
var values = records.Select(it => it).Skip(1).ToList();
foreach (var item in header)
    dataTable.Columns.Add(item, typeof(string));

foreach (object[] value in values) 
    dataTable.Rows.Add(value);

return dataTable;