Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro de sintaxe conta (conta corrente)

Quando tento usar o método Orderby fazendo uma comparação labmda ocorre um erro de sintaxe no conta.Numero ("Não contém uma definição para número e não foi possível encontrar nenhum método de extensão "Numero" que aceite o primeiro argumento do tipo list ")

   var contas = new List<ContaCorrente>()
            {
                    new ContaCorrente(341, 57480),
                    new ContaCorrente(342, 45678),
                    new ContaCorrente(340, 48950),
                    new ContaCorrente(290, 18950)
            };


            contas.OrderBy(conta >= contas.Numero);

Consegue me ajudar?

3 respostas

Genilson.

Ali dentro do parênteses, onde você utilizou lambda, você deve utilizar conta e não contas, por que você quer o Numero de conta específica que esta dentro da coleção Contas, ou seja, de uma conta que você esta iterando de Contas. E ainda receber o resulta em uma variável, por que o método OrderBy retorna uma nova lista ordenada.

vai ficar assim: var contasOrdenadas = contas.OrderBy(conta >= conta.Numero);

Mas a variável que estou declarando é contas, e único problema é que minha lista ordenada não está reconhecendo "Numero" da conta. Quando eu utilizo o construtor sem lista de ordenação reconhece perfeitamente o numero da conta. O problema está na lista ordenada de conta corrente e não sei porque... tem mais alguma ideia?

solução!

Bom descobrir porque não estava dando certo. Tinha esquecido de colocar a interface IOrderedEnumerable para ondernação com lambda ocorrer. Ficou assim:

 var contas = new List<ContaCorrente>()
            {
                new ContaCorrente(341, 1),
                new ContaCorrente(342, 999),
                null,
                new ContaCorrente(340, 4),
                new ContaCorrente(340, 456),
                new ContaCorrente(340, 10),
                null,
                null,
                new ContaCorrente(290, 123)
            };

            //contas.Sort(new ComparadorContaCorrentePorAgencia());

            IOrderedEnumerable<ContaCorrente> contasOrdenadas = contas.OrderBy(conta => conta.Numero);

            foreach (var conta in contas)
            {
                Console.WriteLine(conta);
            }