【问题标题】:C# DataTable.Select With multiple conditionsC# DataTable.Select 有多个条件
【发布时间】:2017-08-10 03:29:47
【问题描述】:

我有一个 DataTable,我想一次查询一列以检查它是否符合设置的条件,由于某种原因,下面的代码在结果不正确之后为第一列提供了正确的结果。

private bool BusinessRulesOne(DataTable dt, DataColumn dc)
    {
        bool isSatisfied = false;
        DataRow[] checkColumn = dt.Select(dc.ColumnName + " " + "in (1,2,3,)");

        if (checkColumn.Length != 0)
        {
            isSatisfied = true;
        }
        return isSatisfied;
    }

在这个方法上,我传递了我正在查询的 DataTable 和我目前正在关注的 DataColumn。这里需要发生的是我想检查此列上的值是否由值 1,2 和 3 组成。如果是,则返回 true。

 private bool BusinessRulesTwo(DataTable dt, DataColumn dc)
    {
        bool isSatisfied = false;
        var checkColumn = dt.Select(dc.ColumnName + " " + " = 1");

        if (checkColumn.Count() > 3)
        {
            isSatisfied = true;
        }
        return isSatisfied;
    }

在另一条规则中,我正在检查该列中一个 (1) 的数量是否超过三 (3),如果是,则返回 true。

欢迎提出任何建议,我不了解 Linq,但如果它能让生活更轻松,我愿意学习和探索它。

【问题讨论】:

  • 列名是否都可以在没有转义序列的情况下使用? (没有空格,没有特殊字符,...)。你能举一个小例子来说明什么样的数据组合会给你正确/不正确的结果?这些值真的是数字类型而不仅仅是包含数字字符的字符串吗?

标签: c# .net linq datatable datacolumn


【解决方案1】:

单等于= 用于赋值,而不是相等检查。尝试双等于 == 1equals 1 而不是 = 1

【讨论】:

  • 记住这是在 DataTable.Select() 方法上,所以它的字符串或上下文必须是 SQL 查询的形式,因此我使用了 =
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 2020-04-02
相关资源
最近更新 更多