pcclrocks 0 Denunciar post Postado Janeiro 21, 2011 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!!! Compartilhar este post Link para o post Compartilhar em outros sites