none
linq com order by isnull RRS feed

  • 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 é esse

     SELECT 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
    quarta-feira, 31 de agosto de 2011 14:36

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
    sexta-feira, 2 de setembro de 2011 22:47
    Moderador

Todas as Respostas