DATASET TO LIST<T>USING LINQ

MAXCIM 05/04/2014 17:52:33
#436932
Olá amigos tudo bem?

preciso passar o conteúdo de uma consulta SQL para um LINQ List<T>.
eu já tenho um DATAset já carregado e atualmente estou passando seu conteúdo para classe através de um FOR/next .
vi um tópico de como fazer a consulta direto da classe no SQLSERVER, mas no MYSQL usando um dataset ou datatable não obtive êxito.

embora o uso do for/next funcione perfeitamente acredito que terei melhor performance se usar um carregamento mais integrado.

desde já agradeço.
KERPLUNK 07/04/2014 10:01:11
#436971
Vide o tópico ORIENTACAO A OBJETOS - CONCEITO tem muita coisa lá e eu postei diversos exemplos de como fazer o que você quer.
OCELOT 07/04/2014 11:33:23
#436974
Resposta escolhida
Linq em vez de for/each não vai necessariamente ter uma performance melhor, pois ele vai basicamente fazer um foreach, eu diria para usar o Linq apenas se ele for simplificar o código
MAXCIM 07/04/2014 22:37:41
#436998
Olá KERPLUNK,valeu pela força, lá tem tudo.

estou com uma nova dificuldade...

preciso acumular expressões WHERE no linq,. tenho que testar algumas checkbox e de acordo com o valor fazer o filtro. na SQL eu ia concatenando as instruçoes e depois passa o parametro pro where da consulta. mas e agora no linq?

seria algo do tipo:

if check_ativo.chequed then
parametro= s.ativo =1
end if

if check_vendas.chequed then
parametro+= s.Vendas =1
end if

grato
KERPLUNK 08/04/2014 08:54:13
#437005
Para esse caso específico que você mostrou, eu pessoalmente usaria um ternário.
MAXCIM 08/04/2014 11:46:08
#437022
Kerplunk, peço sua ajuda mais uma vez.

estudei sobre Ternário e predicate e não consegui nada ainda.

o lance é.. tenho vários filtros, o usuário pode escolher todos ou nenhum, e preciso ir montando o WHERE de acordo com os filtros escolhidos.

eu montei vários predicates e fui preenchendo um a um de acordo com os filtros, assim tenho predicate1, predicate2.. predicate10... alguns contem a function (S) e outros são nothing. mas não vejo como coloca-los no LINQ.

KERPLUNK 08/04/2014 12:06:33
#437025
Você deve estar falando de um Predicate Builder
MAXCIM 08/04/2014 13:12:32
#437027
sim, Kerplunk, tentei usar o Predicate builder, mas não obtive êxito, o exemplo do site quando passo para VB , da erro.

Dim ParamFone As String = [Ô]11[Ô]
Dim ParamEmail As String = [Ô]127[Ô]

Dim predicate = PredicateBuilder.[True](Of Pessoa)()
Dim innerPredicate = PredicateBuilder.[True](Of Pessoa)()

innerPredicate = innerPredicate.[And](Function(s) s.Telefone.Contains(ParamFone))
predicate = predicate.[And](innerPredicate)




esse código da erro: Falha na resolução de sobrecarga porque nenhum [ô]And[ô] acessível aceita este número de argumentos.


Dim predicate As Func(Of Pessoa, Boolean) = Nothing
Dim predicate2 As Func(Of Pessoa, Boolean) = Nothing
If String.IsNullOrEmpty(ParamFone) = False Then
predicate = (Function(s) s.Telefone.Contains(ParamFone))
End If
If String.IsNullOrEmpty(ParamEmail) = False Then
predicate2 = (Function(s) s.Email.Contains(ParamEmail))
End If



result = ListaPessoas.Where(predicate) [ô] não da para incluir o predicate2
KERPLUNK 08/04/2014 13:36:06
#437028
Mas é tudo no mesmo predicado, você não precisa ter duas variáveis.
MAXCIM 08/04/2014 13:50:35
#437030
Não consegui.. se importa em mandar um exemplo de como adicionar clausulas no predicate.
KERPLUNK 08/04/2014 14:31:07
#437032
No site que te passei, tem vários exemplos...
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas