Hoje estava trabalhando no projeto da empresa onde eu precisava mostrar na tela os dados da fatura de utilização do sistema.
O problema: No banco de dados o período da fatura está em uma campo do tipo datetime
, i.e. armazena a data e hora, mas para mostrar na tela eu preciso apenas mostrar a data no formato mês/ano e como fazer para retornar do banco esse formato?
Como utilizamos o Entity Framework para fazer o acesso aos dados, utilizamos os recursos do LinqToSQL.
Primeira versão do método para retornar as faturas, apenas estava fazendo a busca pelos dados do banco e retornando a lista
///
/// Recupera todos os registros ativos
///
/// Coleção não genérica
public IList GetAll()
{
dbEntities context = new dbEntities();
return (from empresaFatura in context.EmpresaFaturas
join empresaFaturaBoleto in context.EmpresaFaturaBoletoes on empresaFatura.id equals empresaFaturaBoleto.idEmpresaFatura
join empresa in context.Empresas on empresaFatura.idEmpresa equals empresa.id
select new DTOEmpresaFatura
{
Id = empresaFaturaBoleto.id,
EmpresaId = empresa.id,
EmpresaNome = empresa.nome,
NumeroBoleto = empresaFaturaBoleto.nroBoleto,
DataVencimento = empresaFaturaBoleto.dataVencimento,
ValorBoleto = empresaFaturaBoleto.valorBoleto.HasValue ? empresaFaturaBoleto.valorBoleto.Value : 0,
Status = empresaFaturaBoleto.situacao.HasValue ? empresaFaturaBoleto.situacao.Value : 0,
Periodo = empresaFatura.periodo
}).ToList();
}
Porém no caso de uso da tela era necessário mostar o período no formato mês/ano, porém não existe a possibilidade de fazer executar o comando ToString ao executar o comando.
Para solucionar esse problema devemos primeiramente retornar os dados do banco e atribuí-los a uma coleção de objetos do tipo anônima, posteriormente pegamos o resultado dessa coleção e finalmente poderemos aplicar o uso do objeto ToString para formatar a data.
///
/// Recupera todos os registros ativos
///
/// Coleção não genérica
public IList GetAll()
{
dbEntities context = new dbEntities();
return (from empresaFatura in context.EmpresaFaturas
join empresaFaturaBoleto in context.EmpresaFaturaBoletoes on empresaFatura.id equals empresaFaturaBoleto.idEmpresaFatura
join empresa in context.Empresas on empresaFatura.idEmpresa equals empresa.id
//Objeto anônimo
select new
{
Id = empresaFaturaBoleto.id,
EmpresaId = empresa.id,
EmpresaNome = empresa.nome,
NumeroBoleto = empresaFaturaBoleto.nroBoleto,
DataVencimento = empresaFaturaBoleto.dataVencimento,
ValorBoleto = empresaFaturaBoleto.valorBoleto.HasValue ? empresaFaturaBoleto.valorBoleto.Value : 0,
Status = empresaFaturaBoleto.situacao.HasValue ? empresaFaturaBoleto.situacao.Value : 0,
Periodo = empresaFatura.periodo
}).AsEnumerable() // coleção do tipo anônima
.Select(query => new DTOEmpresaFatura
{
Id = query.Id,
EmpresaId = query.EmpresaId,
EmpresaNome = query.EmpresaNome,
NumeroBoleto = query.NumeroBoleto,
DataVencimento = query.DataVencimento,
ValorBoleto = query.ValorBoleto,
Status = query.Status,
Periodo = query.Periodo.ToString("MM/yyyy")
}).ToList();
}
Pronto, agora é só compilar o projeto e se divertir.
Deixe um comentário