I know I'm pretty late to provide an answer, but, we can add one more to the list of answers.
As the datatable.select is giving us the result in the form of array, it is to know that we are getting itemarray for columns in each row array. Simplifying this statement with below example.
We can use "ItemArray" if we know/remember/use the column position/number rather than the column name
//ID Name Age
//100 Name 100 Age 100
//101 Name 101 Age 101
//102 Name 102 Age 102
Assuming single row.
DataTable dt=new DataTable();
//Assigning some data into dt. with columns ID, Name, Age.
DataRow[] dr=dt.Select("ID=100");
string PersonID=dr[0].ItemArray[0].Tostring().trim(); //first column is ID
string PersonName=dr[0].ItemArray[1].Tostring().trim(); //second column is Name
string PersonAge=dr[0].ItemArray[2].Tostring().trim(); //third column is Age
Therefore Variables will have following details.
// PersonID= 100; PersonName= Name 100; PersonAge= Age 100
Assuming rows>1 (2 in this example)
dr=dt.Select("ID>100");
string PersonID_1=dr[0].ItemArray[0].Tostring().trim(); //first column is ID
string PersonName_1=dr[0].ItemArray[1].Tostring().trim(); //second column is Name
string PersonAge_1=dr[0].ItemArray[2].Tostring().trim(); //third column is Age
string PersonID_2=dr[1].ItemArray[0].Tostring().trim(); //first column is ID
string PersonName_2=dr[1].ItemArray[1].Tostring().trim(); //second column is Name
string PersonAge_2=dr[1].ItemArray[2].Tostring().trim(); //third column is Age
Therefore Variables will have following details.
// PersonID_1= 101; PersonName_1= Name 101; PersonAge_1= Age 101
// PersonID_2= 102; PersonName_2= Name 102; PersonAge_2= Age 102
Point to remember: first row or column index id always starts with 0.
Therefore, dr[0] is first row & ItemArray[0] is first column