2013-02-19 10 views
5

Używam tabeli danych z C# i chcę filtrować tabelę danych między., Ale gdy uruchomię mój kod po wyjątku jest zgłaszane "Wyrażenie zawiera nieobsługiwanego operatora" Między ""Jak filtrować datatable za pomocą między w C#

oto kod:

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; 

Odpowiedz

6

nie próbowałem go, ale przy użyciu "ITEM_ID >= bla AND ITEM_ID <= bla2" powinny działać prawidłowo.

+0

kochanie <= and > = nie dotyczy danych typu string Mój filtr wygląda następująco: string str = "ITEM_ID <= '01 -31-0001 'AND ITEM_ID> = '01 -33-3333'; – user1448783

1

Spróbuj tego:

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

Możesz również użyć LINQ do 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; 
       }); 
+1

LINQ to również mój najlepszy przyjaciel. =) – HichemSeeSharp

1

nie można użyć słowa kluczowego z elementu datatable między ekspresją RowFilter, można użyć < = i> = operatora w miejscu pomiędzy kluczowych jak poniżej:

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; 
+0

kochany <= and > = nie dotyczy danych typu string Mój filtr wygląda następująco: string str = "ITEM_ID <= '01 -31-0001 'AND ITEM_ID> = '01 -33-3333'; – user1448783

+0

kochanie <= and > = nie dotyczy danych typu string Mój filtr wygląda następująco: string str = "ITEM_ID <= '01 -31-0001 'AND ITEM_ID> = '01 -33-3333'; – user1448783

1

Po prostu użyj innego wyrażenia filtru jako spaceru:

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; 
Powiązane problemy