Проблема выяснить, как, если я нахожусь в первой строке и столбце таблицы данных? - PullRequest
0 голосов
/ 17 февраля 2011

.NET 2.0 Пытаюсь узнать, нахожусь ли я в первом ряду, чтобы я мог сделать сравнение

foreach(DataRow row in tbl.Rows) {
    if (row<something> == "first row") { continue; }

    foreach(DataColumn col in tbl.Columns) {
        if (something == "first column) { continue; }

....

Но это ускользает от меня.

Ответы [ 5 ]

3 голосов
/ 17 февраля 2011

Quick 'n' dirty говорит, что вы можете добавить туда счетчик int.

int rowCounter=0;
foreach(DataRow row in tbl.Rows) 
{  
    rowCounter++;
    if (rowCounter==1) { continue; }
    ...

    //do the same for a columnCounter to get your first-column first-row
}
2 голосов
/ 17 февраля 2011

Вы можете использовать Linq для этого:

foreach(DataRow row in tbl.Rows.Cast<DataRow>().Skip(1)) {

foreach(DataColumn col in tbl.Columns.Cast<DataColumn>().Skip(1)) {

, или вы можете сравнить текущую строку / столбец с первой строкой или столбцом

foreach(DataRow row in tbl.Rows) {
if (tbl.Rows[0] == "first row") { continue; }

foreach(DataColumn col in tbl.Columns) {
    if (tbl.Columns[0] == "first column) { continue; }

, или вы можете использовать индексатор для доступа к ней.(это более быстрый способ доступа к строкам)

for(int rowIndex = 0; rowIndex < tbl.Rows.Count; rowIndex++)
{
    if(rowIndex == 0) return;
    var row  = tbl.Rows[rowIndex];
}
1 голос
/ 23 февраля 2011

На самом деле самый простой и безопасный способ, который я обнаружил, что кто-то опубликовал здесь, но удалил это:

foreach (DataRow row in tbl.Rows) {
    if (tbl.Rows.IndexOf(row) < 1)
    continue;

foreach (DataColumn col in tbl.Columns) {
    if (tbl.Columns.IndexOf(col) < 1)
    continue;
1 голос
/ 17 февраля 2011

Не лучше использовать

bool isFirstReached = false;
foreach (DataRow datarow in datatable.Rows)
{
    foreach (DataColumn datacolumn in datarow.Table.Columns)
    {
        if (!isFirstReached)
        {
            isFirstReached = true;
            continue;
        }
    }
}

, если вы не предпочитаете for вместо foreach

for (int i = 0; i < datatable.Rows.Count; i++)
{
    for (int j = 0; j < datatable.Columns.Count; j++)
    {
        if (j == 0 && i == 0)
        {
            continue;
        }
    }
}
1 голос
/ 17 февраля 2011

Не могли бы вы использовать счетчик так?

        var tbl = new DataTable();
        int row = -1;
        int column = -1;
        foreach (DataRow row in tbl.Rows)
        {
            row++;
            if (row == 0)
            {
                continue;
            }

            foreach (DataColumn col in tbl.Columns)
            {
                column++;
                if (column  == 0)
                {
                    continue;
                }

            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...