Usuário com melhor resposta
linq com order by isnull

Pergunta
-
Tenho uma consulta onde tenho um campo data movimento que para alguns pedidos essa data é nula, preciso que em uma consulta esses registros sejam os ultimos fiz essa consulta no linq mais ele não me ordena como quero
var detalhe = from tfe in context.Tb_Extrato where tfe.Cdempr == codempr && tfe.DtPeri == datarequest + " A " + datarequest orderby tfe.Dtmovi , tfe.Nrid ascending ,tfe.Dshist ascending select new { tfe.Dtmovi, tfe.Dshist, tfe.nrdocu, tfe.VlrEnt, tfe.VlrSai, tfe.VlrSald };
Como esta ai em cima o campo dtmovi é o campo que em alguns registros ele nao tem data ou seja preciso que esses registros fiquem por ultimo nessa consulta e como esta ai esses dados vemm em primeiro, já inverto o ascending e descending mais não fica como preciso, coloquei até o campo dshist no order by onde originalmente ele não existia. O correspondente no T-SQL é esseSELECT CONVERT(Varchar(10),dtmovi,103)AS dtmovi,nrdocu,Isnull(dshist,'null')AS dshist,isnull(vlrent,0)AS vlrent,isnull(vlrsai,0)AS vlrsai,Isnull(vlrsald,0)AS vlrsald FROM TB_Extrato WHERE dtperi = '" & LTrim(Request.QueryString("data")) & "' and Cdempr = " & Session("CD_CodEmpresa") order by isnull(dtmovi,GETDATE()), Nrid
Junior
Respostas
-
Olá Júnior,
Tente assim:
var detalhe = from tfe in context.Tb_Extrato where tfe.Cdempr == codempr && tfe.DtPeri == datarequest + " A " + datarequest orderby ((tfe.Dtmovi == null)?DateTime.Now : tfe.Dtmovi) , tfe.Nrid ascending ,tfe.Dshist ascending select new { tfe.Dtmovi, tfe.Dshist, tfe.nrdocu, tfe.VlrEnt, tfe.VlrSai, tfe.VlrSald };
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Sugerido como Resposta Olavo Oliveira NetoModerator quinta-feira, 8 de setembro de 2011 15:32
- Marcado como Resposta Olavo Oliveira NetoModerator segunda-feira, 12 de setembro de 2011 16:02
Todas as Respostas
-
Olá Júnior,
Tente assim:
var detalhe = from tfe in context.Tb_Extrato where tfe.Cdempr == codempr && tfe.DtPeri == datarequest + " A " + datarequest orderby ((tfe.Dtmovi == null)?DateTime.Now : tfe.Dtmovi) , tfe.Nrid ascending ,tfe.Dshist ascending select new { tfe.Dtmovi, tfe.Dshist, tfe.nrdocu, tfe.VlrEnt, tfe.VlrSai, tfe.VlrSald };
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Sugerido como Resposta Olavo Oliveira NetoModerator quinta-feira, 8 de setembro de 2011 15:32
- Marcado como Resposta Olavo Oliveira NetoModerator segunda-feira, 12 de setembro de 2011 16:02
-
Junior, seu problema foi resolvido com a solução proposta pelo colega Fernando ?
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :)