DATASET TO LIST<T>USING LINQ
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.
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.
Vide o tópico ORIENTACAO A OBJETOS - CONCEITO tem muita coisa lá e eu postei diversos exemplos de como fazer o que você quer.
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
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
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
Para esse caso especÃfico que você mostrou, eu pessoalmente usaria um ternário.
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.
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.
Você deve estar falando de um Predicate Builder
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
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
Mas é tudo no mesmo predicado, você não precisa ter duas variáveis.
Não consegui.. se importa em mandar um exemplo de como adicionar clausulas no predicate.
No site que te passei, tem vários exemplos...
Tópico encerrado , respostas não são mais permitidas