检查数据表中是否包含空值的最佳方法是什么?
在我们的场景中,大多数情况下,一列将具有所有空值。
(此数据表由第三方应用程序返回 - 我们试图在应用程序处理数据表之前进行验证)
答案 0 :(得分:147)
尝试将列的值与DBNull.Value
值进行比较,以便以您认为合适的任何方式过滤和管理空值。
foreach(DataRow row in table.Rows)
{
object value = row["ColumnName"];
if (value == DBNull.Value)
// do something
else
// do something else
}
More information about the DBNull class
如果要检查表中是否存在空值,可以使用此方法:
public static bool HasNull(this DataTable table)
{
foreach (DataColumn column in table.Columns)
{
if (table.Rows.OfType<DataRow>().Any(r => r.IsNull(column)))
return true;
}
return false;
}
这将让你写下这个:
table.HasNull();
答案 1 :(得分:23)
foreach(DataRow row in dataTable.Rows)
{
if(row.IsNull("myColumn"))
throw new Exception("Empty value!")
}
答案 2 :(得分:10)
你可以循环抛出行和列,检查空值,跟踪是否有bool的null,然后在循环遍历表并处理它之后检查它。
//your DataTable, replace with table get code
DataTable table = new DataTable();
bool tableHasNull = false;
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
//test for null here
if (row[col] == DBNull.Value)
{
tableHasNull = true;
}
}
}
if (tableHasNull)
{
//handle null in table
}
你也可以使用break语句从foreach循环中退出,例如
//test for null here
if (row[col] == DBNull.Value)
{
tableHasNull = true;
break;
}
通过表格的其余部分保存循环。
答案 3 :(得分:1)
我会喜欢......
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
答案 4 :(得分:0)
function forEach(target, fn) {
const keys = Object.keys(target);
let i = -1;
while (++i < keys.length) {
fn(target[keys[i]], keys[i]);
}
}
function setValues(obj, src) {
forEach(src, (value, key) => {
if (value !== null && typeof (value) === "object") {
setValues(obj[key], value);
} else {
obj[key] = value;
}
});
}
let obj1 = {foo: {bar: 1, boo: {zot: null}}};
let obj2 = {foo: {baz: 3, boo: {zot: 5}}};
setValues(obj1, obj2);
console.log(JSON.stringify(obj1));
答案 5 :(得分:0)
您可以使用LinQ空/空白/空格等值 使用以下查询
var BlankValueRows = (from dr1 in Dt.AsEnumerable()
where dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
select Columnname);
在此处用表列名替换列名,并在上面的代码中用“” 您的搜索项,我们寻找空值。
答案 6 :(得分:0)
public static class DataRowExtensions
{
public static T GetValue<T>(this DataRow row, string fieldName)
{
if (row.IsNull(fieldName))
{
return default(T);
}
var value = row[fieldName];
if (value == DBNull.Value)
{
return default(T);
}
if (typeof(T) == typeof(string))
{
return (T)Convert.ChangeType(value.ToString(), typeof(T));
}
return (T)Convert.ChangeType((T)value, typeof(T));
}
}
用法:
string value = row.GetValue<string>("ColumnName");