Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,549

    [linq] media di differenza tra 2 date

    salve a tutti ho la seguente query

    codice:
    int EMAtempoMedio = (int)(from L in db.DREAM_Log.AsNoTracking()
            join
            e in EMAList on L.IdRecord equals e.IDEsame
            where  L.Usr_DateIns !=null && e.Data.HasValue
            select new { L.Usr_DateIns, e.Data }
           ).Average(e => DbFunctions.DiffDays(e.Data.Value,e.Usr_DateIns)).Value;

    dove nel DB
    e.Data è nullable
    e.Usr_DateIns è semplicemente datetime
    vorrei sapere la media di differenza tra le 2 date

    purtroppo di da errore
    unable to create a constant value for type "anonymous type". only primitive types or enumeration types are supported in this context

    infatti da qui ho messo il filtro sulla data in modo che mi dia solo quando siano valorizzate, ma non sembra funzionare
    cosa posso fare?

    ps..
    anche con questo da lo stesso errore

    codice:
    EMAtempoM = (int)(from L in db.DREAM_Log.AsNoTracking()
    				 join
    				 e in EMAList on L.IdRecord equals e.IDEsame
    				 where L.Usr_DateIns !=null && e.Data.HasValue
    				 select new { media= DbFunctions.DiffDays(e.Data.Value, L.Usr_DateIns)  
                                     }).Average(e=>e.media);
    Ultima modifica di djciko; 19-07-2018 a 16:50
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    mi sa che deve essere un IEnumerable o IQuerable l'oggetto dove metti il risultato (quando estrai un set ad esempio List<> è tipico), oppure un tipo generico

    provato ad usare

    var EMAtempoMedio= .. (senza cast) from etc ?
    Ultima modifica di djciko; 19-07-2018 a 10:36

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,549
    Quote Originariamente inviata da djciko Visualizza il messaggio
    mi sa che deve essere un IEnumerable o IQuerable l'oggetto dove metti il risultato (quando estrai un set ad esempio List<> è tipoco), oppure un tipo generico

    provato ad usare

    var EMAtempoMedio= .. (senza cast) from etc ?

    si ho fatto cosi
    codice:
       var EMAtempoMList = (from L in db.DREAM_Log.AsNoTracking()
                                              join
                                              e in EMAList on L.IdRecord equals e.IDEsame
                                              where L.TypeOP == "VL_Sign" && L.Usr_DateIns != null && e.Data.HasValue
                                              select new { media = DbFunctions.DiffDays(e.Data.Value, L.Usr_DateIns) }
                                           ).Average(e => e.media);
                            EMAtempoM = (int)EMAtempoMList;
    e mi da errore
    ho controllato bene, in nessuna porzione del codice viene richiamato asEnumerator() per le liste in cui mi appoggio
    sono tutte semplici al DB, anzi, se tolgo il join funziona correttamente
    eppure EMALIST la uso in continuo prima e faccio altre query!

    mannaggia
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    che errore ti da' ?

    secondo me fai prima a farlo da C# ed ottenere solo le due date dalla query, perche' stai cercando di ottenere un (int) da una join con select new e due funzioni ...

  5. #5
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,549
    UFF
    solo dopo tanto strabicamento con gli occhi
    ho visto che LOGlist in alto nel codice viene convertito con .tolist()
    e quindi facendo una query con un db.esami.asnotracking() sebbene visual studio non mi dava errore, in esecuzione falliva!!
    dovrebbero migliorare questo linq!!

    cmq ho trovato,
    RISOLTO
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.