Olá pessoal, meu nome é Mauricio Junior e hoje eu vou falar um pouco sobre o C# com a variável do tipo DateOnly que representa apenas o dia, mês e ano. Isso mesmo, não existe time para esse tipo.
Eu estava trabalhando e desenvolvendo um sistema que tinha esse campo e eu preciso mostrar os aniversariantes do dia na tela. O que eu fiz foi Web mas pode ser feito o mesmo com Desktop ou Api.
Esee é o campo:
public DateOnly PacientBirthday { get; set; }
Como eu já tenho um método que retorna todos os usuários do sistema, agora eu preciso fazer uma busca neste campo que analisa o valor para informar que esse determinado paciente vai fazer aniversário hoje.
O primeiro ponto é: o aniversariante não pode ser verificado pelo ano, para identificar o sistema é necessário verificar o mês e o dia com o valor do database.
Segundo: Para esse tipo de campo você pode fazer uma verificação usando LINQ sem qualquer problema.
Pega todos os pacientes:
var pacients = _clinicPacientService.GetAll();
Pega o dia de hoje pelo DateOnly:
DateOnly.FromDateTime(DateTime.Today).Day
Pega o mês de hoje pelo DateOnly:
DateOnly.FromDateTime(DateTime.Today).Month
Dentro da variável pacients eu posso verificar com o .where para verificar se o paciente aparece na lista.
Pesquisa com o LINQ:
//filtering
var results = pacients
.Where(x => x.PacientBirthday.Day == DateOnly.FromDateTime(DateTime.Today).Day &&
x.PacientBirthday.Month == DateOnly.FromDateTime(DateTime.Today).Month);
Note que eu verifiquei o dia e o mês para que identifique quem pode ser o aniversariante do dia.
Espero ter ajudado e qualquer dúvida pode entrar em contato comigo pelo site www.mauriciojunior.net.