Как реализовать пустую проверку данных с помощью существующего цикла for - PullRequest
1 голос
/ 26 апреля 2020

У меня есть метод, чтобы проверить наличие пустых датаров. Однако из-за значений, которые мне требуется проверять с использованием for-loop со значениями row и column, мне еще предстоит найти способ интеграции следующего метода, который проверяет наличие пустых строк, чтобы предотвратить ненужные проверки.

Функция бега

int headerRow = getColumnHeaderRowNumber(dt);

int firstDataRow = headerRow + 1;

for (int dataRow = firstDataRow; dataRow < dt.Rows.Count; dataRow++)
{
    //using known column header and data row value, 
    //loops each column to match a column title, maintaining on current row
}

Проверить пустые данные

if (!(AreAllColumnsEmpty(row)))
{
    //executes if row is not empty
}

bool AreAllColumnsEmpty(DataRow dr)
{
    if (dr == null)
    {
        return true;
    }
    else
    {
        foreach (var value in dr.ItemArray)
        {
            if (value.ToString().Trim() != null && value.ToString().Trim() != "")
            {
                return false;
            }
        }
        return true;
    }
}

1 Ответ

1 голос
/ 26 апреля 2020

Вы можете изменить метод AreAllColumnsEmpty, чтобы он стал повторно используемым, например:

    static bool AreAllColumnsEmpty(DataRow dr, out Dictionary<string, string> nameValuePair)
    {
        // contains non-empty columns name and value
        nameValuePair = new Dictionary<string, string>();

        if (dr == null)
        {
            return true;
        }
        else
        {
            DataColumnCollection columns = dr.Table.Columns;
            int columnIndex = 0;

            foreach (var value in dr.ItemArray)
            {
                string valueToString = value.ToString().Trim();
                if (!string.IsNullOrEmpty(valueToString))
                {
                    nameValuePair.Add(columns[columnIndex].ColumnName, valueToString);
                }
                columnIndex++;
            }

            return nameValuePair.Count == 0;
        }
    }

AreAllColumnsEmpty метод циклически проходит по каждому столбцу (ячейке, полю) строки. Непустые столбцы хранятся в Dictionary<string, string> nameValuePair как пары имя-значение. Метод AreAllColumnsEmpty возвращает значение bool, которое указывает, является ли строка пустой, и имеет ли выходной параметр Dictionary<string, string> nameValuePair.

AreAllColumnsEmpty метод is stati c, но это не обязательно. Dictionary<string, string> nameValuePair будет сбрасываться при каждом выполнении метода AreAllColumnsEmpty.

Строка

    if (value.ToString().Trim() != null && value.ToString().Trim() != "")

заменяется на

    string valueToString = value.ToString().Trim();
    if (!string.IsNullOrEmpty(valueToString))
...