C#DataTable.Select() - 如何格式化过滤条件?

jim*_*jim 2 c# datatable

这不起作用

DataRow[] mySelectedRows = myDataTable.Select("processed <> True");
Run Code Online (Sandbox Code Playgroud)

myDataTable有一行名为processed.我想从这个表中选择处理不等于True的行.有人可以帮忙吗?

Mur*_*rph 8

是处理bool还是字符串?

如果一个bool然后"未处理"应该工作,否则如果它的字符串"processed <>'True'" - 使用单引号作为where字符串中的分隔符.值得检查表格/列中您查询数据时的值,以确保您正在测试正确的事情(这在过去一直困扰着我).

  • 作为参考,两个可能中的哪一个是正确的? (2认同)

Jef*_*nal 5

这应该只是正常工作,但它不会返回的行processednull.

要包含空值,请尝试以下操作:

DataRow[] rows = myDataTable.Select("isnull(processed, false) <> true"); 
Run Code Online (Sandbox Code Playgroud)

SQL null是一个不确定的值.它不等于布尔值true,但它也不等于 true.(参见Null(SQL).)

对于一般的过滤器表达式参考,见DataColumn.ExpressionMSDN主题.