none
LINQ - indentifier expected RRS feed

  • Pergunta

  • Olá boa tarde,

    Sou iniciante no LINQ e estou tentado efetuar uma seleção not in em dois datatables, pesquisei em vários lugares e me parece que a solução seria a seguinte.

    From a In dt Where !(From b In dtRegistros Select b) Select a

    porém no VS fica uma marcação entre o ! e o ( indicando " indentifier expected", não consigo encontrar uma solução para isso.

     

    quinta-feira, 22 de julho de 2010 15:36

Respostas

  • Mauro,

    Segue exemplo:

    Public Class Form3
      Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim dt1 As New DataTable
    
        dt1.Columns.Add("col1", Type.GetType("System.String"))
        dt1.Rows.Add("abc")
        dt1.Rows.Add("def")
    
        Dim dt2 As New DataTable
    
        dt2.Columns.Add("col1")
        dt2.Rows.Add("def")
        dt2.Rows.Add("ghi")
    
        Dim result = From rowDt1 In dt1.Rows _
               Where Not (From rowDt2 In dt2.Rows _
                    Select rowDt2("col1")).Contains(rowDt1("col1"))
    
        MessageBox.Show(result.Count())
      End Sub
    End Class
    

    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta Mauro Couto quinta-feira, 22 de julho de 2010 18:06
    quinta-feira, 22 de julho de 2010 17:32
    Moderador
  • Mauro, só para constar

    ! é a simbologia de "Not" para C#, no seu caso VB.NET é como o Andre disse acima


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ? Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    • Marcado como Resposta Mauro Couto quinta-feira, 22 de julho de 2010 18:06
    quinta-feira, 22 de julho de 2010 17:38
    Moderador

Todas as Respostas

  • Mauro,

    Segue exemplo:

    Public Class Form3
      Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim dt1 As New DataTable
    
        dt1.Columns.Add("col1", Type.GetType("System.String"))
        dt1.Rows.Add("abc")
        dt1.Rows.Add("def")
    
        Dim dt2 As New DataTable
    
        dt2.Columns.Add("col1")
        dt2.Rows.Add("def")
        dt2.Rows.Add("ghi")
    
        Dim result = From rowDt1 In dt1.Rows _
               Where Not (From rowDt2 In dt2.Rows _
                    Select rowDt2("col1")).Contains(rowDt1("col1"))
    
        MessageBox.Show(result.Count())
      End Sub
    End Class
    

    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    • Marcado como Resposta Mauro Couto quinta-feira, 22 de julho de 2010 18:06
    quinta-feira, 22 de julho de 2010 17:32
    Moderador
  • Mauro, só para constar

    ! é a simbologia de "Not" para C#, no seu caso VB.NET é como o Andre disse acima


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ? Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    • Marcado como Resposta Mauro Couto quinta-feira, 22 de julho de 2010 18:06
    quinta-feira, 22 de julho de 2010 17:38
    Moderador