DATASET TO LIST<T>USING LINQ
Para o VB.Net ficaria mais ou menos assim o uso do PredicateBuilder no seu código
Lembrando que PredicateBuilder não faz parte do .Net, ela é uma classe bem simples que pode ser adicionada no seu projeto, segue um módulo abaixo da versão traduzida para o VB
Dim predicate = PredicateBuilder.True(Of Pessoa)()
If Not String.IsNullOrWhiteSpace(ParamFone) Then
predicate = predicate.And(Function(p) p.Telefone.Contains(ParamFone))
End If
If Not String.IsNullOrWhiteSpace(ParamEmail) Then
predicate = predicate.And(Function(p) p.Email.Contains(ParamEmail))
End If
result = ListaPessoas.Where(predicate.Compile())
Lembrando que PredicateBuilder não faz parte do .Net, ela é uma classe bem simples que pode ser adicionada no seu projeto, segue um módulo abaixo da versão traduzida para o VB
Imports System.Linq.Expressions
Public Module PredicateBuilder
Public Function [True](Of T)() As Expression(Of Func(Of T, Boolean))
Return Function(f) True
End Function
Public Function [False](Of T)() As Expression(Of Func(Of T, Boolean))
Return Function(f) False
End Function
<System.Runtime.CompilerServices.Extension()> _
Public Function [Or](Of T)(ByVal expr1 As Expression(Of Func(Of T, Boolean)), ByVal expr2 As Expression(Of Func(Of T, Boolean))) As Expression(Of Func(Of T, Boolean))
Dim invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast(Of Expression)())
Return Expression.Lambda(Of Func(Of T, Boolean))(Expression.[Or](expr1.Body, invokedExpr), expr1.Parameters)
End Function
<System.Runtime.CompilerServices.Extension()> _
Public Function [And](Of T)(ByVal expr1 As Expression(Of Func(Of T, Boolean)), ByVal expr2 As Expression(Of Func(Of T, Boolean))) As Expression(Of Func(Of T, Boolean))
Dim invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast(Of Expression)())
Return Expression.Lambda(Of Func(Of T, Boolean))(Expression.[And](expr1.Body, invokedExpr), expr1.Parameters)
End Function
End Module
Ocelote, brigadão eu estava esquecendo da classe.. valeu mesmo
obrigado tbm ao Kerplunk.
problema resolvido.
esse link é fantástico...
obrigado tbm ao Kerplunk.
problema resolvido.
esse link é fantástico...
Tópico encerrado , respostas não são mais permitidas