【问题标题】:How to filter datatable using between in c#如何在 C# 中使用 between 过滤数据表
【发布时间】:2013-02-03 18:35:38
【问题描述】:

我正在使用带有 c# 的数据表,我想用 between.but 过滤数据表。但是当我运行我的代码时,抛出异常“表达式包含不支持的运算符 'Between'”

代码如下:

string str = "ITEM_ID BETWEEN  " + textEdit1.Text + " AND  " +    textCUS_COA_CODE.Text + " ";

DataTable dt = new DataTable();
dt = this.pAK_ASIADataSet.sp_STOCKS_report;

dt.DefaultView.RowFilter =str;

【问题讨论】:

    标签: c# filter datatable


    【解决方案1】:

    您也可以使用LINQ to DataTable:

    var result = dt.AsEnumerable()
      .Where(row => {
                        var itemId = row.Field<int>("ITEM_ID");
                        var value1 = int.Parse(textEdit1.Text);
                        var value2 = int.Parse(textCUS_COA_CODE.Text);
    
                        return itemId >= value1 && itemId <= value2;
                    });
    

    【讨论】:

    • LINQ 也是我最好的朋友。 =)
    【解决方案2】:

    我还没有尝试过,但是使用"ITEM_ID &gt;= bla AND ITEM_ID &lt;= bla2" 应该可以正常工作。

    【讨论】:

    • 亲爱的 = 不适用于字符串类型数据我的过滤器是这样的: string str = "ITEM_ID = '01-33-第3333章 ;
    【解决方案3】:

    只需使用另一个过滤器表达式即可:

    String str = String.Format("ITEM_ID >= {0} AND ITEM_ID <= {0}", textEdit1.Text);
    
    DataTable dt = new DataTable();
    dt = this.pAK_ASIADataSet.sp_STOCKS_report;
    
    dt.DefaultView.RowFilter =str;
    

    【讨论】:

      【解决方案4】:

      您不能将 between 关键字与 datatable RowFilter 表达式一起使用,您可以使用 = 运算符代替 between 关键字,如下所示:

      string str = "ITEM_ID <=" + textEdit1.Text + " AND  ITEM_ID>=" +    textCUS_COA_CODE.Text + " ";
      
      DataTable dt = new DataTable();
      dt = this.pAK_ASIADataSet.sp_STOCKS_report;
      
      dt.DefaultView.RowFilter =str;
      

      【讨论】:

      • 亲爱的 = 不适用于字符串类型数据我的过滤器是这样的: string str = "ITEM_ID = '01-33-第3333章 ;
      • 亲爱的 = 不适用于字符串类型数据我的过滤器是这样的: string str = "ITEM_ID = '01-33-第3333章 ;
      【解决方案5】:

      试试这个:

      var rows = dt.Select(String.Format("ITEM_ID >= {0} AND ITEM_ID <= {1}", textEdit1.Text, textCUS_COA_CODE.Text))
      

      【讨论】:

        【解决方案6】:

        查看 MSDN 论坛,BETWEEN 似乎不是行过滤器支持的运算符:

        http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/1220e0f5-4bab-4b53-b8b6-a7a9e8420558/

        你能用 AND 代替吗:

        ITEM_ID >= val_oneAND ITEM_ID <= val_two
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        • 2013-10-27
        相关资源
        最近更新 更多