代码之家  ›  专栏  ›  技术社区  ›  Mark Maslar

数据集选择不相加

  •  1
  • Mark Maslar  · 技术社区  · 15 年前

    我正在对一个数据集执行多项选择。所有这些选择的总记录数应该与数据集中的总记录数匹配,但不匹配(所有选择的总记录数较少)。我已经阅读到.NET 1.1 Select有一个包含多个和条件的错误,但这是VS2005&NET 2.0。

    代码如下: 注意:某些行的类别值没有填充。

    string Filter;
    Filter = "Category = 'HIGH'";
    Response.Write("High: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");
    
    int TotalRecords = dslErrors.Tables[0].Rows.Count; //This is correct
    
    Filter = "Category = 'MEDIUM'";
    Response.Write("Medium: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");
    
    Filter = "Category = 'LOW'";
    Response.Write("Low Error Count: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");
    
    Filter = "((Category <> 'HIGH') AND (Category <> 'MEDIUM') AND (Category <> 'LOW'))";
    Response.Write("Other: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");
    
    1 回复  |  直到 15 年前
        1
  •  7
  •   Welbog    15 年前

    如果有任何记录 Category dbnull ,则它们将与您列出的表达式和不匹配。

    我建议你换最后一个 filter 到:

    "(
       (
             (Category <> 'HIGH') 
         AND (Category <> 'MEDIUM')
         AND (Category <> 'LOW')
       )
       OR Category IS NULL
    )";
    

    它不起作用的原因是与dbnull的比较产生的结果是空的,而不是预期的假。