none
Converter valores de listbox para uma list e fazer uma intersecção entre tal list e uma outra RRS feed

  • Pergunta

  • Tenho uma listbox que contem um valor indeterminado de valores e quero jogar esses valores para uma List<> Pelo que pesquisei, consegui fazer até aqui:

                    var todosValores = lstRoll.Items.OfType<object>().Select(x => x.ToString()).ToList();
    
                    List<double> listaDeNums = todosValores.Select(s => double.Parse(s)).ToList();                   
    
                    var lista = new List<double>();
                        lista.Add(somaLinha1);
                        lista.Add(Math.Round((somaLinha1 + valorTamanhoIntervalo), 2));

    O código acima joga os valores da listbox pra uma List<> e depois joga pra uma outra List<> convertendo pra double os valores.

    O que rola é que agora eu tenho uma outra List distinta dessas que contém números decimais.

    Supondo que a minha listaDeNums agora carregue os valores { 1,2,3,...,9,10 } e a minha "outraLista"(variável "lista" no código) carregue os valores { 2.86 , 5.65 }. Esses dois valores precisam ser tratados como o início e fim de um intervalo que serão "interseccionados" na listaDeNums e uma variável seja incrementada a cada número que faça parte da intersecção. Neste caso concreto exemplificado por mim acima, a minha variável incrementada, no final, deveria dar 3, porque entre 2.86 e 5.65 numa lista de 1 a 10, há 3 números.

    Alguém pode me ajudar?

    Obrigado desde já :)

    domingo, 25 de março de 2018 03:40

Todas as Respostas

  • Olá Oderschvank,

    conforme o link Método Enumerable.Intersect da Microsoft, você pode usar o Intersect para tipos primitivos, como int, double, long, etc...

    Você iria criar uma terceira lista com essa intersecção, veja:

    List<double> listaRepetidos = listadeNums.Intersect(outraLista).ToList();


    Att, Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor Vote como Útil, e se resolvi seu problema, clique em Marcar como Resposta.

    Olá Lucio, obrigado pela resposta! 

    Estou com um pequeno problema, porém...

    Fiz o teste prático assumindo os valores da lista de 1 a 9, então o programa fez os devidos cálculos corretamente e me entregou 3 intervalos. Tomando o primeiro como exemplo, que é de 1 até 3,67 a função que você me falou deveria me retornar 3, porque de 1 até 3,67 numa lista de 1 até 9, há 3 números. Segue print do que me retorna (creio que seja apenas uma questão de conversão): https://puu.sh/zPgJt/18a3affdc8.png

    domingo, 25 de março de 2018 16:36