2009-05-19 23 views
5

Zakładając Mam kolumna o nazwie A i chcę, aby sprawdzić, czy A jest zerowy lub pusty, co jest właściwym sposobem na sprawdzenie tego celu użyć DataView za RowFilter:W jaki sposób mogę sprawdzić, puste w DataView.RowFilter

DataTable dt = GetData(); 

DataView dv = new DataView(dt); 

dv.RowFilter = "A IS NOT NULL OR A IS NOT ''"; 

Powyższe wydaje się jednak nie działać.

Odpowiedz

11

Czy jesteś przywiązany do .net < 3.5? Jeśli nie, możesz użyć linq, aby sprawdzić stan kolumny.

W przeciwnym razie istnieje Isnull(,) funkcja jak w T-SQL:

dv.RowFilter = "Isnull(a,'') <> ''"; 
6

jestem przy założeniu, trzeba pobrać wszystkie rekordy, w których wartość w kolumnie A nie jest ani zerowy ani „”

The poprawne wyrażenie jest:

dv.RowFilter = "A IS NOT NULL AND A <> ''"; 

I pobrać przefiltrowane rekordy pętlę na dv.ToTable() jak poniżej:

foreach (DataRow dr in dv.ToTable().Rows) 
    Console.WriteLine(dr["A"]); 

To powinno działać ... na zdrowie!

5

Możesz dodać

dv.RowFilter = "CONVERT(Isnull(a,''), System.String) <> ''"

jeśli kolumna ma typ danych jak numer ISNULL (a, '') zwróci liczbę. Eval o numerze <> 0 rzuciłby wyjątek.

+1

+1 Twoja odpowiedź pomogła mi rozwiązać ten wyjątek. –