none
Calcular diferença de datas e comparar com campo integer em expressão lambda RRS feed

  • Pergunta

  • Tenho um campo data(DateTime) e também um campo do tipo integer. Preciso fazer a diferença entre esse campo data e data de hoje(DateTime.Now) e comparar se é maior ou menor que o meu campo integer. Fiz e dá esse erro.

    Oprerator > cannot be applied to operands of type 'System.TimeSpan' and 'int'

    Essa é minha expressão:

    var atendimento = db.T_CRM_StatusPDV
                                  .Where(dt => (dt.DT_TransacaoV - DateTime.Now) > dt.DE_Frequenci
    quinta-feira, 5 de junho de 2014 19:03

Todas as Respostas

  •  Olá pnet,

      o que você deseja é calcular o valor em horas entre a diferença das datas ?

    quinta-feira, 5 de junho de 2014 19:19
  • Fiz assim e me deu o erro abaixo

    db.T_CRM_StatusPDV
                                  .Where(dt => (dt.DT_TransacaoV - DateTime.Now).Days > 45);

    O intellisense sugeriu o Days, mas dá esse erro: 'System.Nullable<System.TimeSpan>' does not contain a definition for 'Days' and no extension method 'Days' accepting a first argument of type 'System.Nullable<System.TimeSpan>' could be found (are you missing a using directive or an assembly reference?) e não pede nenhum using pelo intellisense

    • Editado pnet quinta-feira, 5 de junho de 2014 19:24
    quinta-feira, 5 de junho de 2014 19:23
  • Fiz assim e me deu o erro abaixo

    db.T_CRM_StatusPDV
                                  .Where(dt => (dt.DT_TransacaoV - DateTime.Now).Days > 45);

    O intellisense sugeriu o Days, mas dá esse erro: 'System.Nullable<System.TimeSpan>' does not contain a definition for 'Days' and no extension method 'Days' accepting a first argument of type 'System.Nullable<System.TimeSpan>' could be found (are you missing a using directive or an assembly reference?) e não pede nenhum using pelo intellisense

     Olá 1 veja se o campo TransacaoV não é do tipo Nullable se for faça assim :

    var sql = db.T1.Where(i => (i.DATA_ATIVACAO.Value.Day - DateTime.Now.Day) > 45);

     Se não for passe diretamente :

    var sql = db.T1.Where(i => (i.DATA_ATIVACAO.Day - DateTime.Now.Day) > 45);

    • Sugerido como Resposta Daniel Brito br quinta-feira, 5 de junho de 2014 23:33
    quinta-feira, 5 de junho de 2014 19:29
  • Fiz assim:

    atendimento = db.T_CRM_StatusPDV
                                  .Join(db.T_PDV, t1 => t1.DE_Cnpj, t2 => t2.CNPJ, (t1, t2) => new { t1, t2})
                                  .Where(dt => ((TimeSpan)(dt.t1.DT_TransacaoV - DateTime.Now)).TotalDays > 45 
                                         && dt.t2.DataCadastro >= dataInicio && dt.t1.DT_ControleV >= dataControle)
                                  .Select(i => new { i.t1.DE_Cnpj }).ToList();

    Usei o TotalDays.

    • Sugerido como Resposta Daniel Brito br quinta-feira, 5 de junho de 2014 23:33
    quinta-feira, 5 de junho de 2014 20:47