6

C# でデータ テーブルを使用しており、between でデータ テーブルをフィルター処理したいのですが、次のコードを実行すると、「式にはサポートされていない演算子 '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;
4

6 に答える 6

7

私はそれを試していませんが、使用"ITEM_ID >= bla AND ITEM_ID <= bla2"するとうまくいくはずです。

于 2013-02-19T06:49:52.577 に答える
4

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
于 2013-02-19T06:49:55.160 に答える
3

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;
                });
于 2013-02-19T06:51:36.563 に答える
1

これを試して:

var rows = dt.Select(String.Format("ITEM_ID >= {0} AND ITEM_ID <= {1}", textEdit1.Text, textCUS_COA_CODE.Text))
于 2013-02-19T06:50:43.477 に答える
1

データテーブルの RowFilter 式で between キーワードを使用することはできません。以下のように 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;
于 2013-02-19T06:52:44.260 に答える
1

ウォークアラウンドとして別のフィルター式を使用するだけです。

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;
于 2013-02-19T06:53:12.183 に答える