Reputation: 8108
I am looping through every row in a datatable:
foreach (DataRow row in dt.Rows) {}
I would like to get the index of the current row within the dt datatable. for example:
int index = dt.Rows[current row number]
How do i do this?
Upvotes: 70
Views: 258396
Reputation: 6338
Why don't you try this
for(int i=0; i < dt.Rows.Count; i++)
{
// u can use here the i
}
Upvotes: 4
Reputation: 11
ArrayList check = new ArrayList();
for (int i = 0; i < oDS.Tables[0].Rows.Count; i++)
{
int iValue = Convert.ToInt32(oDS.Tables[0].Rows[i][3].ToString());
check.Add(iValue);
}
Upvotes: 0
Reputation: 2551
You do know that DataRow is the row of a DataTable correct?
What you currently have already loop through each row. You just have to keep track of how many rows there are in order to get the current row.
int i = 0;
int index = 0;
foreach (DataRow row in dt.Rows)
{
index = i;
// do stuff
i++;
}
Upvotes: 3
Reputation: 49261
int index = dt.Rows.IndexOf(row);
But you're probably better off using a for loop instead of foreach.
Upvotes: 130
Reputation: 245429
If you need the index of the item you're working with then using a foreach
loop is the wrong method of iterating over the collection. Change the way you're looping so you have the index:
for(int i = 0; i < dt.Rows.Count; i++)
{
// your index is in i
var row = dt.Rows[i];
}
Upvotes: 33
Reputation: 63126
You have two options here.
The individual row simply represents data, so it will not know what row it is located in.
Upvotes: 4