2017-02-11 130 views
1

我有DataTable及其過濾器使用DataView和RowFilter使用字符串。它的工作正常。但是,當蜇創建一個巨大的線,然後在DataView行篩選器中得到stackoverflow異常。使用過濾器拋出異常

dv.RowFilter = strFilter 

字符串strFilter如下所示。只有兩個列科和位置過濾

strFilter=([Division] LIKE ('Division 2') or [Division] LIKE ('%|Division 2') or [Division] LIKE ('%|Division 1') AND [Location] LIKE ('%Location1') or [Location] LIKE ('Locaion2|%')..... 

相反的RowFilter我以前LINQ,但它不會返回到正確的表

Dim query = dv.Table.AsEnumerable().Where(Function(m) strFilterOption.Contains(m.Field(Of String)("Division")) AndAlso strFilterOption.Contains(m.Field(Of String)("Location"))) 

dv = query.AsDataView() 
Dim dtFillData As DataTable=dv.ToTable 

如何做到這一點使用LINQ或任何其他解決方案?

在此先感謝

+0

好了,開始使用'OrElse',而不是'AndAlso'。 –

回答

0

我認爲你應該做類似如下:

Dim query = dv.Table.AsEnumerable().Where(Function(m) m.Field.ToString()(Of String)("Division").Contains("Division 2") ElseOr m.Field(Of String)("Division").EndsWith("|Division 2") ElseOr m.Field(Of String)("Division").EndsWith("|Division 1") AndAlso .....)) 
+0

但它是一個動態的字符串。它是多個[分區]和[位置] – Mark