none
Consultar data em Linq RRS feed

  • Pergunta

  • Ola pessoal, bom dia a todos.

    Preciso de uma ajuda com a seguinte situação:

    Recebo um valor string do form e depois preciso comparar com um valor data (mas apenas o mês) que está no banco de dados.

    Ex:

    //valor da variável 04

    valorForm;

    //data do banco 22/04/2015

    return db.MinhaBase.Where(x => x.CampoData.Month == valorForm).SingleOrDefault();

    Tentei outras formas além dessa, mas não tive sucesso. Alguma sugestão?

    Agradeço a atenção.

    quarta-feira, 28 de janeiro de 2015 12:27

Todas as Respostas

  • Luiz,

    Qual erro aconteceu exatamente?

    Pode ser que a consulta esteja retornando vários registros e ao invocar SingleOrDefault aconteça um erro por essa razão. Uma alternativa, se realmente for isto, é utilizar o método FirstOrDefault.

    quarta-feira, 28 de janeiro de 2015 12:32
  • Esse "SingleOrDefault" não é meu problema caro Renato. A grande dificuldade aqui é comparar um string com o mês de uma data do tipo datetime gravado no banco.
    quarta-feira, 28 de janeiro de 2015 12:36
  • Bom dia Luiz, o erro pode estar no tipo da sua conversão.

    Você pode utilizar as seguintes possibilidades:

    // retorna o primeiro dado da lista
    return MinhaBase.FirstOrDefault(x => x.CampoData.Month.Equals(Convert.ToInt32(valorForm)));
    
    // retorna a lista de dados
    return MinhaBase.Where(x => x.CampoData.Month.Equals(Convert.ToInt32(valorForm))).ToList();



    quarta-feira, 28 de janeiro de 2015 12:39
  • Demetrius bom dia.

    Você cometeu o erro de se prender ao exemplo que havia informado. Mas graças a sua sugestão eu consegui.

    Não imaginei que fosse possível comparar com um valor int.

    Realizei um Convert.ToInt32 e comparei.

    Funcionou com exito.

    Agradeço muito pela atenção.

    Forte abraço.

    quarta-feira, 28 de janeiro de 2015 12:52
  • Exatamente meu caro, como tinha mencionado, o erro pode estar no tipo da sua conversão.

    Passei o exemplo somente para evidenciar melhor.

    Que bom que pude lhe ajudar :)

    **************************************************************************************

    Sempre lembre de marcar a resposta se ela foi útil.

    Tks.



    quarta-feira, 28 de janeiro de 2015 12:57