Get different records in two tables

0

I have a offline table:

id int
descricao string
online int
chave string

And another table online :

id int
descricao string
chave string

How do I select the fields of the online table that do not exist in the offline table (by filtering through the chave column via LINQ?)

    
asked by anonymous 02.03.2017 / 15:00

1 answer

3

Basically (whereas you are using the EF (Entity Framework)):

MeuContexto db = new MeuContexto();//Representação das entidades do seu Banco de dados

ICollection<Offline> offline = db.Offline; //Todos os registros da tabela offline são passados para essa coleção

ICollection<Online> online = db.Online;//Mesmo que o de cima só que para tabela online

var filtrado = online.Where(x =>//x é a representação de um item na lista online no caso ele é um objeto "Online", obs: pode ser qualquer nome
                                 /*Where é a mesma coisa q o where no sql, 
                                   vai pegar uma lista onde os registros "batem" com a condição especificada*/

                                !offline.Any(y => //y é a mesma coisa q x só que ele é um objeto "Offline"
                                /*O método Any retorna true se algum item bater com as condições especificadas, no caso: 
                                offline.chave == online.chave*/
                                                 y.chave == x.chave
                                            )
                           );
/* Ou seja filtrado vai receber uma collection de "Online" onde:
Os registros onde "Where" 
não "!"
tem incidencia de chaves iguais na tabela offline "Any(y => y.chave == x.chave)" */
    
02.03.2017 / 15:15