64 messaggi dal 30 novembre 2004
Ciao a tutti, devo effettuare una query linq su un model che copio di seguito ma non so come farla.

Model:
public class IncarichiModel
    {
        public List<IncarichiTrattamentiModel> LstIncarichiTrattamenti { get; set; }
    }

    public class IncarichiTrattamentiModel
    {
        public trattamento trattamento { get; set; }
        public List<SoggettoIncarico> LstTitolari { get; set; }
        public List<SoggettoIncarico> LstResponsabili { get; set; }
        public List<SoggettoIncarico> LstDpo { get; set; }
        public List<SoggettoIncarico> LstSA { get; set; }
        public List<SoggettoIncarico> LstContitolari { get; set; }
    }

    public class SoggettoIncarico
    {
        public int AnagraficaId { get; set; }
        public int RuoloId { get; set; }
        public string Cognome { get; set; }
        public string Nome { get; set; }
        public string RagioneSociale { get; set; }
        public string CodFiscale { get; set; }
        public DateTime? DataInizio { get; set; }
        public DateTime? DataFine { get; set; }
        public int EntityType { get; set; }
    }


La query data una "dataAnalisi" mi deve tirar fuori una LstIncarichiTrattamenti in cui le varie List<SoggettoIncarico> contengono solo i SoggettoIncarico cui la DataInizio o Fine sono null
e DataFine è inferiore alla "dataAnalisi".
Ho fatto una funzione che mi torna la classe IncarichiModel con tutti i dati da filtrare poi in base alla "dataAnalisi" e darli in pasto ad un repeater.
Come posso fare per filtrarli?
11.512 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Ho fatto una funzione che mi torna la classe IncarichiModel con tutti i dati

Ok, supponiamo che tu l'abbia assegnata alla variabile incarichi.
A questo punto puoi fare:
//Definisco il filtro
Func<SoggettoIncarico, bool> filtro = s => s.DataFine == null || s.DataFine <= dataAnalisi;

//Applico il filtro alle varie liste
var titolariFiltrati = incarichi.LstIncarichiTrattamenti.LstTitolari.Where(filtro);
var responsabiliFiltrati = incarichi.LstIncarichiTrattamenti.LstResponsabili.Where(filtro);
var dpoFiltrati = incarichi.LstIncarichiTrattamenti.LstDpo.Where(filtro);
...


E poi imposti titolariFiltrati, responsabiliFiltrati e dpoFiltrati come data source di altrettanti Repeater.

Però non ho capito molto bene che filtro vuoi applicare, quindi il mio esempio è approssimativo.

DataInizio o Fine sono null
e DataFine è inferiore alla "dataAnalisi".

Riformula meglio, descritto così non si capisce. Intendevi:
(DataInizio è null OPPURE precedente a dataAnalisi) E (DataFine è null OPPURE successiva a dataAnalisi)?


ciao,
Moreno

Enjoy learning and just keep making
64 messaggi dal 30 novembre 2004
Ciao Moreno, prima di tutto grazie per la risposta,
si intendevo perfettamente questo:
(DataInizio è null OPPURE precedente a dataAnalisi) E (DataFine è null OPPURE successiva a dataAnalisi)
Quindi il filtro diventerebbe:

//Definisco il filtro
Func<SoggettoIncarico, bool> filtro = s => (s.DataInizio == null || s.DataInizio<=dataAnalisi) && s.DataFine == null || s.DataFine >= dataAnalisi);

Giusto?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.