2014-01-24 96 views
0

我有一个字符串列表,需要将它转换为Datarow。 我试图将列表<string>转换为c#中的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(); 

,这也是不allowed.Can有人帮我在这。

+0

你可能不应该使用'DataRow'。你想做什么? – SLaks

回答

3

DataRow s只能以DataTable存在。

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

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

+0

我需要在返回DataRow.So哟的方法中使用此转换哟意味着我需要创建一个表并重新启动行? –

+0

@ Newto.net:你不应该有一个返回'DataRow'的方法。 DataRows是传输信息的一种非常糟糕的方式。 – SLaks

0

您可能需要NewRow()创造新DataRow

DataRow row = _dataTable.NewRow(); 

检查_dataTable在你的代码。

+0

输入数组长度大于此表中的列数。这个 –

+0

@ Newto.net得到someothr异常如果是这种情况,那么你必须添加一些代码并显示你正在尝试做什么? –

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); 
    } 
} 
} 
1

您可以创建内部DataTableDataRow对象像SLaks指出。 无论其原因...

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

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

现在,你可以做你想做你的DataTable对象无论...

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); 
相关问题