如何在现有的for-loop中实现空数据表检查?

问题描述 投票:1回答:1

我有一个方法来检查空的datarows。然而,由于我需要使用一个值来检查 for-looprowcolumn 值,我还没有找到一种方法来整合以下检查空行的方法,以防止不必要的检查。

运行函数

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;
    }
}
c# for-loop datatable datarow
1个回答
1
投票

你可以修改 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 方法是静态的,但它不需要是静态的。Dictionary<string, string> nameValuePair 将在每次方法 AreAllColumnsEmpty 执行。

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

取而代之的是

    string valueToString = value.ToString().Trim();
    if (!string.IsNullOrEmpty(valueToString))
© www.soinside.com 2019 - 2024. All rights reserved.