none
Comparar datas com Linq está gerando exceção RRS feed

  • Pergunta

  • Bom dia a todos !

     

    Estou começando com Linq e estou apanhando pra comparar datas. Tenho o seguinte código:

     

    var treinos = from t in contexto.TreinoAtletaNovo<br/>
           where t.fkAtleta == pkAtleta && t.dataExecucao.Date == e.Day.Date<br/>
           select t;<br/>
    <br/>
    foreach (TreinoAtletaNovo item in treinos)<br/>
    {<br/>
      ImageButton imgTreino = new ImageButton();<br/>
    <br/>
      imgTreino.ID = String.Concat("imgTreino", item.pkTreinoAtletaNovo);<br/>
      imgTreino.ClientIDMode = System.Web.UI.ClientIDMode.Static;<br/>
      imgTreino.AlternateText = "Corrida";<br/>
      imgTreino.ImageUrl = "~/Images/treino.png";<br/>
    <br/>
      e.Cell.Controls.Add(imgTreino);<br/>
    }
    

    Ele aconteçe no DayRender de um Calendar do ASP.Net.

    Já tentei comparar de diversas formas diferentes, inclusive forçando tipo e sempre tenho essa exceção: "The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."

     

    Alguem tem alguma ideia do que eu possa fazer para conseguir fazer essa comparação ?

     

    Obrigado a todos pela atenção !!

    quinta-feira, 4 de novembro de 2010 16:01

Respostas

  • Isso mesmo.

    Fiz o descrito a baixo e funcionou corretamente:

    DateTime dataInicialRenderizando = e.Day.Date;
    DateTime dataFinalRenderizando = e.Day.Date.AddDays(1).AddSeconds(-1);
    
    var treinos = from t in contexto.TreinoAtletaNovo
           where t.fkAtleta == pkAtleta && t.dataExecucao >= dataInicialRenderizando && t.dataExecucao <= dataFinalRenderizando
           select t;

     

    Boa tarde a todos !!

    • Marcado como Resposta Thiago Bernabé quinta-feira, 4 de novembro de 2010 18:28
    quinta-feira, 4 de novembro de 2010 18:28

Todas as Respostas

  • Thiago,

    Só uma ideia... Você tentou da seguinte maneira:

    var treinos = from t in contexto.TreinoAtletaNovo
           where t.fkAtleta == pkAtleta && t.dataExecucao >= e.Day.Date && t.dataExecucao < e.Day.Date.AddDays(1)
           select t;
    

    ?


    André Alves de Lima
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    quinta-feira, 4 de novembro de 2010 18:13
    Moderador
  • Tentei, o problema esta com o objeto tipo Date (e.Day.Date).

    Parece que o LINQ to Entites não está suportando isso ainda.

    Vou tentar fazer algo desse tipo com DateTime agora, quando tiver a resposta volto aqui pra postar.

     

    Qualquer outra ideia é bem vinda !!

    quinta-feira, 4 de novembro de 2010 18:21
  • Isso mesmo.

    Fiz o descrito a baixo e funcionou corretamente:

    DateTime dataInicialRenderizando = e.Day.Date;
    DateTime dataFinalRenderizando = e.Day.Date.AddDays(1).AddSeconds(-1);
    
    var treinos = from t in contexto.TreinoAtletaNovo
           where t.fkAtleta == pkAtleta && t.dataExecucao >= dataInicialRenderizando && t.dataExecucao <= dataFinalRenderizando
           select t;

     

    Boa tarde a todos !!

    • Marcado como Resposta Thiago Bernabé quinta-feira, 4 de novembro de 2010 18:28
    quinta-feira, 4 de novembro de 2010 18:28