c# - 对象类型的 DBNull 值的 DataView 的 RowFilter

分类: beat365亚洲体育在线 2025-08-24 00:59:36 作者: admin

对于 DataTable 中的 DBNull 值,过滤器字符串的外观如何。

"IsNull("Column1", 'Null Column')='Null Column'"

"IsNull("Column1", 'Null Column')<>'Null Column'"

此字符串用于过滤 Column1 中的 Null 值。如果它是一个字符串列并且为其他类型抛出异常,它工作正常。

对此有任何想法吗?

而且我还想知道列对象类型的 Null 和 DBNull 是否相同?

dt.Columns.Add(new DataColumn("Title", typeof (string)));

dt.Columns.Add(new DataColumn("TitleID", typeof(Int32)) {AllowDBNull = true});

dt.Columns.Add(new DataColumn("Date", typeof(object)) );

dt.Columns.Add(new DataColumn("Desc", typeof(string)));

for(int i =0; i<10; i++)

{

var input = i%2 == 0 ? (object) i : DBNull.Value;

var result = input.Equals(DBNull.Value);

DataRow row = dt.NewRow();

row["Title"] = "C#" + i;

row["TitleID"] = i % 2 == 0 ? (object) i : DBNull.Value;

row["Date"] = i == 2 ? (object) DateTime.Now : DBNull.Value;

row["Desc"] = i % 2 == 0 ? null : "";

dt.Rows.Add(row);

}

DataView defView = dt.DefaultView;

defView.RowFilter = "IsNull(Date, 'Null Column')='Null Column'";

var filtered = defView;