c#中如何将DataTable中的值转换为字符串数组
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15487660/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to Convert the value in DataTable into a string array in c#
提问by user2047452
I have a DataTable that contains a single row. I want to convert this DataTable values into a string array such that i can access the column values of that DataTable through the string array index For example, if my DataTable is as follows
我有一个包含单行的数据表。我想将此 DataTable 值转换为字符串数组,以便我可以通过字符串数组索引访问该 DataTable 的列值例如,如果我的 DataTable 如下
| Name | Address | Age |
-------------------------------
| jim | USA | 23 |
I want to store the values in that Datatable into my string array such that MyStringArray[1]will give me the value USA.
我想将该数据表中的值存储到我的字符串数组中,这样MyStringArray[1]会给我值 USA。
Thanks in Advance
提前致谢
采纳答案by digEmAll
Very easy:
好简单:
var stringArr = dataTable.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
Where DataRow.ItemArray
property is an array of objects containing the values of the row for each columns of the data table.
其中,DataRow.ItemArray
property 是一个对象数组,其中包含数据表每一列的行值。
回答by ljh
string[] result = new string[table.Columns.Count];
DataRow dr = table.Rows[0];
for (int i = 0; i < dr.ItemArray.Length; i++)
{
result[i] = dr[i].ToString();
}
foreach (string str in result)
Console.WriteLine(str);
回答by Travis J
Perhaps something like this, assuming that there are many of these rows inside of the datatable and that each row is row
:
也许是这样的,假设数据表中有很多这样的行,并且每一行是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()} );
}
You could then access one:
然后你可以访问一个:
MyStringArrays.ElementAt(0)[1]
If you use linqpad, here is a very simple scenario of your example:
如果您使用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"
}
回答by Abdurrahman Mubeen Ali
If that's all what you want to do, you don't need to convert it into an array. You can just access it as:
如果这就是你想要做的,你不需要把它转换成一个数组。您可以通过以下方式访问它:
string myData=yourDataTable.Rows[0][1].ToString();//Gives you USA
回答by Basil
private string[] GetPrimaryKeysofTable(string TableName)
{
string stsqlCommand = "SELECT column_name FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE " +
"WHERE OBJECTPROPERTY(OBJECT_ID(constraint_name), 'IsPrimaryKey') = 1" +
"AND table_name = '" +TableName+ "'";
SqlCommand command = new SqlCommand(stsqlCommand, Connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(table);
string[] result = new string[table.Rows.Count];
int i = 0;
foreach (DataRow dr in table.Rows)
{
result[i++] = dr[0].ToString();
}
return result;
}