如何使用现有的 for 循环实现空数据行检查
How to implement empty datarow check with an existing for-loop
我有一种检查空数据行的方法。但是,由于我需要使用 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;
}
}
您可以修改 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
方法 returns 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))
我有一种检查空数据行的方法。但是,由于我需要使用 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;
}
}
您可以修改 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
方法 returns 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))