STRING MÁXIMA NUMA STRING COM NUMEROS

JCM0867 03/08/2024 22:05:51
#503464
Olá pessoal

Tenho a seguinte query no ASP Net, C#

var ultimoNumero = UnitOfWork.EntityRepository().Find()
.Where(x => x.Cb1TipoBoleto == tipoBoleto)
.Max(x => x.Cb1Documento);

Cb1Documento é uma string.
Na tabela está "322460" e "1000055"
Só que pega o Max "322460" ao invés de "1000055"
O ultimoNumero tem que retornar "1000055" e como string
Como faço a query corretamente?

Grato
WEBMASTER 04/08/2024 09:43:51
#503465
Em tese um cast / parse resolve o problema, tente algo como

var maxDocumentoNumerico = documentos.Max(d => int.Parse(d.Documento));


Se seguir por essa linha, seria algo como...
  
var ultimoNumero = UnitOfWork.EntityRepository().Find()
.Where(x => x.Cb1TipoBoleto == tipoBoleto)
.Max(x => int.Parse(x.Cb1Documento));


Não testei, mas pela lógica seria algo nessa linha
JCM0867 05/08/2024 09:59:19
#503467
Alterado em 05/08/2024 10:02:52 Bom dia,
Tentei dessa maneira e não deu certo e o ultimoNumero virou int, comoco ToString() e continuou não ordenando
Coloquei errado a query faltou a Tabela
var ultimoNumero = UnitOfWork.EntityRepository<Cobrancas1>().Find()
.Where(x => x.Cb1TipoBoleto == tipoBoleto)
.Max(x => int.Parse(x.Cb1Documento));

A IA me passou isso, parece funcionar, será que pode dar algum probelma:

var documentos = UnitOfWork.EntityRepository<Cobrancas1>()
.Find()
.Where(x => x.Cb1TipoBoleto == tipoBoleto)
.Select(x => x.Cb1Documento)
.ToList();

var ultimoNumero = documentos
.Select(x => int.TryParse(x, out var parsed) ? parsed : 0)
.Max()
.ToString();
Faça seu login para responder