LinqToSQL converter objeto para ToString

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 uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *