如何将DataTable中的值转换为c#中的字符串数组

use*_*452 11 .net c# linq

我有一个包含单行的DataTable.我想将此DataTable值转换为字符串数组,以便我可以通过字符串数组索引访问该DataTable的列值.例如,如果我的DataTable如下所示

|  Name  |  Address  |   Age  |
-------------------------------
|  jim   |    USA    |   23   |
Run Code Online (Sandbox Code Playgroud)

我想将Datatable中的值存储到我的字符串数组中,以便MyStringArray [1]给我一个值USA.

提前致谢

dig*_*All 27

很容易:

var stringArr = dataTable.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
Run Code Online (Sandbox Code Playgroud)

其中DataRow.ItemArrayproperty是一个对象数组,包含数据表的每列的行值.


Tra*_*s J 5

也许是这样的,假设数据表中有很多这些行,并且每行都是row:

List<string[]> MyStringArrays = new List<string[]>();
foreach( var row in datatable.rows )//or similar
{
 MyStringArrays.Add( new string[]{row.Name,row.Address,row.Age.ToString()} );
}
Run Code Online (Sandbox Code Playgroud)

然后你可以访问一个:

MyStringArrays.ElementAt(0)[1]
Run Code Online (Sandbox Code Playgroud)

如果你使用linqpad,这是你的例子的一个非常简单的场景:

class Datatable
{
 public List<data> rows { get; set; }
 public Datatable(){
  rows = new List<data>();
 }
}

class data
{
 public string Name { get; set; }
 public string Address { get; set; }
 public int Age { get; set; }
}

void Main()
{
 var datatable = new Datatable();
 var r = new data();
 r.Name = "Jim";
 r.Address = "USA";
 r.Age = 23;
 datatable.rows.Add(r);
 List<string[]> MyStringArrays = new List<string[]>();
 foreach( var row in datatable.rows )//or similar
 {
  MyStringArrays.Add( new string[]{row.Name,row.Address,row.Age.ToString()} );
 }
 var s = MyStringArrays.ElementAt(0)[1];
 Console.Write(s);//"USA"
}
Run Code Online (Sandbox Code Playgroud)