Usuário com melhor resposta
Comparar datas com Linq está gerando exceção

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 !!
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
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 -
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 !!
-
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