none
LINQ to SQL retornando sbyte minimo e data máxima C# RRS feed

  • Pergunta

  • Boa tarde a todos,

    No retorno da consulta ao banco eu retorno uma collection de uma classe (+- como listado abaixo), preciso dentro desta collection utilizando LINQ capturar o registro onde tenha a menor prioridade (sbyte) porém levando em consideração a DataHora.

    Se eu tiver três registros como abaixo:

    Pri(sbyte) - DataHora - Cod

    1 - 22/05-1

    0 -22/05 -2

    0 - 23/05-3

    1 -24/05-4

    Tenho que retornar neste caso o registro de código 3, pois tem a menor prioridade, e eu levo em consideração que a data dele é a maior entre os registros de menor prioridade.

    Como faço isso ? Espero que vocês possam me ajudar !!

    Obrigado desde já.

    0 23/05 2
    0 23/05 2

    Atenciosamente, Seratti. Se responder sua pergunta, marque, se apenas for util, marque.






    • Editado Seratti sexta-feira, 24 de maio de 2013 19:42
    sexta-feira, 24 de maio de 2013 19:39

Todas as Respostas

  • Olá amigo, segue um exemplo:

    IEnumerable<SUA_CLASSE> result = lista.OrderByDescending(data => data.DataHora).ThenBy(pri => pri.Pri).ToList();

    lembrando que o campo DataHora  tem que ser do tipo DateTime pra possa ser feita a ordenação.

    []s,

    Elton


    • Sugerido como Resposta EltonMcdo segunda-feira, 27 de maio de 2013 18:24
    • Editado EltonMcdo segunda-feira, 27 de maio de 2013 18:29
    segunda-feira, 27 de maio de 2013 18:24
  • EltonMcdo primeiramente obrigado pela resposta !!

    Nesta meu IEnumerable eu obtive um count de 4 registros, correto até aqui ? Pois imaginei ter apenas o registro de menor prioridade e maior data/hora.

    Como tinha 4 registro (todos) eu fiz um foreach e imaginei que na primeira "passada" o registro (0) fosse o registro no qual se encaixasse no requisito de menor prioridade e maior data/hora.

    E examinando o código que voce me enviou, eu nao teria que ter algo como um "if" ? Por exemplo:

    IEnumerable<NexcodeControls.ncServico.ncAlarme> result = obs.OrderByDescending(data => data.DataHora.MAX).ThenBy(pri => pri.Prioridade.MIN).ToList();

    Note que eu adicionei (.MAX e .MIN) nos quais não estão disponíveis para as propriedades.

    Espero que tenha entendido o que expliquei acima. Caso ficou muito complicado e complexo, tento explicar novamente !!

    Obrigado !


    Atenciosamente, Seratti. Se responder sua pergunta, marque, se apenas for util, marque.

    segunda-feira, 10 de junho de 2013 14:44