none
Selecionar os tre maior valores num datagridview, como fazer isto? RRS feed

  • Pergunta

  • Bom dia ,Bom eu estou desenvolvendo uma sistema para TCC, ae acontece o seguinte estou implementando um relatorio de curva ABC, que faz um balanço e me traz os produtos que vendem mais e me da em porcentagem, exemplo: vendi 150 pacotes de arroz, cada um a dez reais, 10*150 = 1500 , o lucro total da minha loja e de 10,000.00 assim  1,500.00 / 10,000.00 = 0,15,

    0,15 * 100 = 15 %, ou seja o arroz e respansavel por 15% do meu lucro, O PROBLEMA e que eu quero pegar os tres mais vendidos, vamos supor que eu tenha um  datagrid preenchido com 15 itens cada um com uma porcentagem diferente ae eu quero ler esse datagrid e pegar as TRES maiores porcentagens.

    Eu tentei comparar usando um while porem não tive sucesso sem falar nos outros metodos de POG utilizados, se poderem me ajudar eu ficarei agradecido...

    DANIEL FERREIRA, 4º periodo de ANALISE E DESENVOLVIMENTO DE SISTEMAS  (UEPA-XV redenção-PA (2015) a (2018)).


    Imagem do datagrid coluna[7]
    • Editado Daniel_Reis_ sábado, 17 de dezembro de 2016 13:40
    sábado, 17 de dezembro de 2016 13:10

Respostas

  • Olá Daniel-Ferreira - TADS-analise de sistema

    Conseguiu resolver este problema?


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta Daniel_Reis_ quarta-feira, 1 de fevereiro de 2017 16:48
    terça-feira, 24 de janeiro de 2017 13:40
  • Daniel, boa tarde!

    Você pode utilizar LINQ, para filtrar isso.

    Segue abaixo exemplo:

    DataTable table = (DataTable)seuGrid.DataSource;
    var tresMaiores = table.AsEnumerable()
                           .OrderByDescending(o => o["campoPercentual"])
                           .Take(3)
                           .CopyToDataTable();
    
    //OrderByDescending: Ordena pelo campo que você escolheu, na ordem decrescente.
    //Take(3)          : Retorna o 3 primeiros valores da sequência.
    //CopyToDataTable(): Retorna uma DataTable.
    //Obs.: Caso dê erro, defina o "using System.Linq;" no começo do seu form.

    Qualquer dúvida, estou a disposição!

    att.

    Felipe

    • Marcado como Resposta Daniel_Reis_ quarta-feira, 1 de fevereiro de 2017 16:48
    terça-feira, 24 de janeiro de 2017 15:46

Todas as Respostas