我在数据集上使用select方法来检索符合我条件的结果:
foreach (DataRow dr in dsPone2.Tables["tt-pone"].Select(strWhereCondition))
{
dsPone.Tables["tt-pone"].ImportRow(dr);
}
如何从
更改strWhereConditionstrWhereCondition += " AND poneid = 0 and aoneid = 0 and tranid = 0";
到tranid不是0的地方?
我是否使用<>
或!=
?
答案 0 :(得分:7)
通常情况下,咨询文档是前进的方向。 DataTable.Select(string)
重定向到DataColumn.Expression
以记录过滤器表达式中允许的内容 - “操作员”列表显示<>
但不显示!=
。
我个人会尝试避免使用基于字符串的过滤并使用LINQ to DataSet,但当然需要.NET 3.5或更高版本。
答案 1 :(得分:2)
您必须使用SQL表示法<>
在您的情况下tranid <> 0
答案 2 :(得分:2)
使用tranid <> 0
。
表达式的语法是described here。
答案 3 :(得分:1)
DataColumn.Expression
property的文档详细说明了DataTable.Select
method的filterExpression
参数使用的语法。在“操作员”部分,大约有三分之一的页面显示...
允许使用布尔AND,OR和NOT运算符进行连接。
...还列出了<>
比较运算符。因此,这应该意味着您可以执行tranid <> 0
或NOT (tranid = 0)
。