2017-02-11 170 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