Extraction of data other than two lists of objects [closed]

0

I'm working on a WEB API and need to remove some of the values contained in one list and that are contained in another. To be better illustrated would be the equivalent of removing the data from a list where the user in question has already registered. Below is the Get method of the web api that is doing the request and the way I am doing to try to do this extraction however the same is only returning me the values that the user already registered first followed by all values from the table after, could you give me a light please.

// GET: api/Jogos?ID_Jogador
public IEnumerable<Jogos> GetJogos(long ID_Jogador)
{
    //Desabilita a criação de proxy que gera erros na chamada
    //db.Configuration.ProxyCreationEnabled = false;

    var query =
       (
            from jO in db.Jogos
            from jJ in db.JogosJogador
            where jJ.ID_Jogador == ID_Jogador && jJ.ID_Jogo == jO.ID_Jogo
            select new
            {
                jO.ID_Jogo,
                jO.Nome_Jogo,
                jO.Nome_Icone_Jogo,
                jO.Plataforma,
                jO.Genero
            }
        );
    List<Jogos> jogosJogadorTem = new List<Jogos>();
    foreach (var item in query)
    {
        jogosJogadorTem.Add(new Jogos
        {
            ID_Jogo = item.ID_Jogo,
            Nome_Jogo = item.Nome_Jogo,
            Nome_Icone_Jogo = item.Nome_Icone_Jogo,
            Genero = item.Genero,
            Plataforma = item.Plataforma
        });
    }
    List<Jogos> todosJogos = db.Jogos.ToList();
    var diferenca1 = jogosJogadorTem.Except(todosJogos);
    var diferenca2 = todosJogos.Except(jogosJogadorTem);
    var juncao = diferenca2.Union(diferenca1).ToList();
    return juncao.ToList();
}
    
asked by anonymous 16.08.2018 / 03:08

1 answer

1

To use Except you need to implement IEqualityComparer link

But you can also do this:

// retorna os jogos não contidos no "jogosJogadorTem"
todosJogos.Where(x => !jogosJogadorTem.Any(y => y.ID_Jogo == x.ID_Jogo)).ToList();
    
16.08.2018 / 21:31