Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
boa tarde.
gostava de saber como usar uma string passada como parametro para filtrar dados na query Linq.
estou a fazer assim, mas dá erro:
dim conditon as string = "myArticle.AGroupId = 1"
Public Shared Function GetByCondition(ByVal condition As String) As IQueryable(Of DataContext.Article)
Dim dbObservatorio As New DataContext.ObservatorioDataContext
Dim data = From myArticle In dbObservatorio.Articles _
Where (condition) _
Select myArticle
Return data
End Function
se escrever «Where myArticle.AGroupId = 1» na query, ela funciona!
Como posso dar a volta a isto?
fica aqui uma imagem do erro.
Agradeço qualquer ajuda.
Resolvido.
Em vez de usar uma string, usei um arraylist.
Ficou assim:
Dim arrayListInfo As New System.Collections.ArrayList()
arrayListInfo.Add("-1") 'ano
arrayListInfo.Add("-1") 'yearmax
...
If searchParameters.Ano <> String.Empty Then
arrayListInfo.Item(0) = searchParameters.Ano.ToString
End If
If searchParameters.AnoFim <> String.Empty Then
arrayListInfo.Item(1) = searchParameters.AnoFim.ToString
End If
...
Dim artigos As IQueryable(Of DataContext.Article)
Try
artigos = DBLayer.Articles.GetByCondition1(arrayListInfo)
Catch ex As Exception
artigos = Nothing
End Try
Assim declarei os parametros de pesquisa e chamei ometodo Linq
Metodo Linq
Public Shared Function GetByCondition1(ByVal condition As ArrayList) As IQueryable(Of DataContext.Article)
Dim dbObservatorio As New DataContext.ObservatorioDataContext
Dim dataTodos = From myArticle In dbObservatorio.Articles _
Select myArticle
If condition.Item(0) <> "-1" Then
Dim data = From myarticle In dataTodos _
Where myarticle.ADate = Long.Parse(condition.Item(0)) _
Select myarticle
dataTodos = data
End If
If condition.Item(1) <> "-1" Then
Dim data = From myarticle In dataTodos _
Where myarticle.AYearMax = Long.Parse(condition.Item(1)) _
Select myarticle
dataTodos = data
End If
Return DataTodos
Aqui fica uma boa maneira de usar parametros de pesquisa com o Linq.
Gostaram?
Devagar se vai ao longe!!!
Carregando comentários...