如何在DataView.RowFilter中检查空白

Xai*_*oft 8 c# asp.net dataview

假设我有一个名为A的列,并且我想检查A是否为空或空白,使用DataView的RowFilter检查这个的正确方法是什么:

DataTable dt = GetData();

DataView dv = new DataView(dt);

dv.RowFilter = "A IS NOT NULL OR A IS NOT ''";
Run Code Online (Sandbox Code Playgroud)

以上似乎不起作用.

Wil*_*zuk 16

你绑定.net <3.5吗?如果没有,您可以使用linq检查列的状态.

否则有一个Isnull(,)类似于T-SQL 的函数:

dv.RowFilter = "Isnull(a,'') <> ''";
Run Code Online (Sandbox Code Playgroud)


Ras*_*dit 8

我假设您需要检索A列中的值既不为空也不是''的所有记录

正确的expr是:

 dv.RowFilter = "A IS NOT NULL AND A <> ''";
Run Code Online (Sandbox Code Playgroud)

并在dv.ToTable()上检索已过滤的记录循环,如下所示:

foreach (DataRow dr in dv.ToTable().Rows)
    Console.WriteLine(dr["A"]);
Run Code Online (Sandbox Code Playgroud)

这应该工作......干杯!


Sha*_*bir 5

你可以加

dv.RowFilter = "CONVERT(Isnull(a,''), System.String) <> ''"

如果列的数据类型为数字,则Isnull(a,'')将返回数字.数字<> 0的Eval会抛出异常.