10

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

DataTable dt = GetData();

DataView dv = new DataView(dt);

dv.RowFilter = "A IS NOT NULL OR A IS NOT ''";

上面的方法似乎不起作用。

4

3 回答 3

17

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

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

dv.RowFilter = "Isnull(a,'') <> ''";
于 2009-05-19T17:20:41.437 回答
8

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

正确的表达式是:

 dv.RowFilter = "A IS NOT NULL AND A <> ''";

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

foreach (DataRow dr in dv.ToTable().Rows)
    Console.WriteLine(dr["A"]);

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

于 2009-05-20T05:28:14.880 回答
5

你可以加

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

如果列的数据类型为数字,则 Isnull(a,'') 将返回数字。number <> 0 的 Eval 将引发异常。

于 2012-02-27T11:13:54.077 回答