none
Convert em LINQ to SQL RRS feed

  • Pergunta

  • Senhores,

    Estou com uma dúvida aqui em Linq e acho que vocês podem me ajudar.

    Tenho um campo no banco DateTime e preciso fazer uma busca e pegar somente a data, ou seja, os 10 primeiros caracteres. com TSQL eu uso a seguinte Query:

    SELECT * FROM dbo.Entrega WHERE CONVERT(VARCHAR(10),dataEntregaFinal,103)= '01/07/2011'
    

    Essa data, '01/07/2011' eu tenho que trocar por uma variável string, que vem de um campo, por exemplo, txtData.text

    como eu poderia fazer isso em linq? já tentei diversar formas, mas não funciona.

    Agradeço desde já a ajuda.

    Att,

    Diego Moura


    || "Se sua pergunta foi respondida, por favor, marque como resposta" || || "Porque Deus amou o mundo de tal maneira que deu seu Filho unigênito, para que todo aquele que nele crê não pereça, mas tenha a vida eterna".(João 3:16) ||
    segunda-feira, 4 de julho de 2011 12:23

Respostas

  • Diego,tente utilizar Entity SQL para poder resolver este seu problema, veja um exemplo abaixo de como ficaria:

    string dtValor = DateTime.Parse(TextBox1.Text).ToString("MM/dd/yyyy");<br/><br/> var consulta = db.Entregas<br/>.Where(string.Format("Year(it.dataEntregaFinal)==Year(Cast('{0}' as System.DateTime)) && "+<br/>"Month(it.dataEntregaFinal)==Month(Cast('{0}' as System.DateTime)) && "+<br/>"Day(it.dataEntregaFinal)==Day(Cast('{0}' as System.DateTime))", dtValor));
    



    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    terça-feira, 5 de julho de 2011 12:57
    Moderador

Todas as Respostas

  • Diego no linq vc não precisa desse convert e só comparar a data normal mesmo
    Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
    terça-feira, 5 de julho de 2011 11:51
  • Olha meu código em LINQ

          var consulta = from p in db.Entregas
                  join v in db.Veiculos
                  on p.idVeiculo equals v.id
                  where v.placa == TextBox2.Text
                  && p.dataEntregaFinal == TextBox1.Text
                  select p;
    

    e dá o seguinte erro: Error 1 Operator '==' cannot be applied to operands of type 'System.DateTime' and 'string' , entre o p.dataEntregaFinal e o TextBox1, sendo que meu campo do banco é dateTime , e não consigo fazer uma conversão para comprar somente os 10 primeiros caracteres da data.


    || "Se sua pergunta foi respondida, por favor, marque como resposta" || || "Porque Deus amou o mundo de tal maneira que deu seu Filho unigênito, para que todo aquele que nele crê não pereça, mas tenha a vida eterna".(João 3:16) ||
    terça-feira, 5 de julho de 2011 12:40
  • Diego,tente utilizar Entity SQL para poder resolver este seu problema, veja um exemplo abaixo de como ficaria:

    string dtValor = DateTime.Parse(TextBox1.Text).ToString("MM/dd/yyyy");<br/><br/> var consulta = db.Entregas<br/>.Where(string.Format("Year(it.dataEntregaFinal)==Year(Cast('{0}' as System.DateTime)) && "+<br/>"Month(it.dataEntregaFinal)==Month(Cast('{0}' as System.DateTime)) && "+<br/>"Day(it.dataEntregaFinal)==Day(Cast('{0}' as System.DateTime))", dtValor));
    



    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    terça-feira, 5 de julho de 2011 12:57
    Moderador
  • Amigo, deu certo ?
    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    quarta-feira, 6 de julho de 2011 11:06
    Moderador