我需要在DataView中进行测试,以检查至少有一行是否包含一个空值的单元格。在您看来,最好的方法是什么?
提前致谢。
答案 0 :(得分:2)
正如SLaks所提到的,你需要遍历行和每行中的项目。您可以使用LINQ执行此操作:
bool hasNull = view.Table.Rows.OfType<DataRow>()
.Any(r => r.ItemArray.Any(o => o == DBNull.Value));
或者您可以自己编写循环,例如:
private bool HasEmptyItem(DataView view)
{
foreach (DataRow row in view.Table.Rows)
{
foreach (DataColumn col in view.Table.Columns)
{
if (row[col] == DBNull.Value)
return true;
}
}
return false;
}
虽然LINQ版本更紧凑,但仍然会在行和列上循环,所以请选择。
<强>更新强>
根据评论,这里有一个更好的样本,基于你想要做的事情。这只是循环遍历行,并检查给定列是否为空(确保将DBNull.Value
与DataTable
一起使用),如果是,则将其设置为false以防止出现问题。只需将IS_DEFAULT_COL
更改为正确的索引。
const int IS_DEFAULT_COL = 1;
foreach (DataRow row in view.Table.Rows)
{
if (row[IS_DEFAULT_COL] == DBNull.Value)
row[IS_DEFAULT_COL] = false;
}
答案 1 :(得分:1)
如果不进行测量,我猜测答案是嵌套循环。