J'ai un DataTable qui contient une seule ligne. Je souhaite convertir ces valeurs DataTable en un tableau de chaîne de sorte que je puisse accéder aux valeurs de colonne de ce DataTable via l'index du tableau de chaînes.
| Name | Address | Age |
-------------------------------
| jim | USA | 23 |
Je veux stocker les valeurs de cet objet Datatable dans mon tableau de chaînes de sorte que MyStringArray [1] me donne la valeur USA.
Merci d'avance
Très facile:
var stringArr = dataTable.Rows[0].ItemArray.Select(x => x.ToString()).ToArray();
Où DataRow.ItemArray
property est un tableau d'objets contenant les valeurs de la ligne pour chaque colonne de la table de données.
Peut-être quelque chose comme ceci, en supposant qu'il y a beaucoup de ces lignes dans le datatable et que chaque ligne est 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()} );
}
Vous pouvez alors accéder à l'un d'entre eux:
MyStringArrays.ElementAt(0)[1]
Si vous utilisez linqpad , voici un scénario très simple de votre exemple:
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"
}
Si c'est tout ce que vous voulez faire, vous n'avez pas besoin de le convertir en tableau. Vous pouvez simplement y accéder en tant que:
string myData=yourDataTable.Rows[0][1].ToString();//Gives you USA
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);
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;
}