Ciao
ho una classe che contiene i dati strutturata così
mi viene passato tramite stringa un dato che serve ad ottenere dalla classe sopra i seguenti daticodice:public class Turno { public string? Nome { get; set; } public string? Qualifica { get; set; } public DateTimeOffset? Inizio { get; set; } public DateTimeOffset? Fine { get; set; } public bool Cambio { get; set; } public bool Autorizzato { get; set; } }
il dato passato in stringa è tipo Anno Mese Autorizzato e altri come sottocodice:public class Conteggio { public string? Dato { get; set; } public int Valore { get; set; } public double Ore { get; set; } }
quindi faccio questo
funziona e li contocodice:public static List<Conteggio> Conteggio(string Campo) { var r = new Dictionary<string, Conteggio>(); foreach (var turno in Context.Turni) switch (Campo) { case "Anno": { conta(r, turno.Inizio?.Year.ToString(), turno); break; } case "Autorizzato": { conta(r, turno.Autorizzato ? " Autorizzato " : " Non Autorizzzato ", turno); break; } case "Nome": { conta(r, turno.Nome, turno); break; } case "Cambio": { conta(r, turno.Cambio ? turno.Inizio == turno.Fine ? " Chiesto cambio " : " Dato cambio " : " Nessun cambio ", turno); break; } case "Mese": { conta(r, turno.Inizio?.Month.ToString(), turno); break; } case "Qualifica": { conta(r, turno.Qualifica, turno); break; } } return r?.Values.ToList(); } static void conta(Dictionary<string, Conteggio> Dict, string dato, Turno turno) { if (!Dict.Keys.Contains(dato)) Dict.Add(dato, new Conteggio() { Dato = dato }); Dict[dato].Valore++; Dict[dato].Ore += (turno.Fine.Value.Subtract(turno.Inizio.Value).TotalHours); }
non è il massimo ma ho già una idea per farlo meglio ma non è questo il problema
il problema è che voglio contare diversi campi con diverse combinazioni
tipo voglio contare tutti quelli autorizzati o non autorizzati nei diversi mesi
quindi ad esempio [novembre-autorizzati] valore=2 ore=10 [novembre-non autorizzati] valore=3 ore=10 [dicembre-autorizzati] valore=4 ore=16 ecc.
valore è il numero totale conteggiati e ore è il numero di ore fatte
ma non solo con due campi ma un numero e una combinazione definito dalla stringa che ricevo
può essere [anno-autorizzati] [anno-mese-autorizzati] [mese-qualifica-anno] con tutte le combinazioni
Come faccio? devo prevedere tutti i casi nel codice o esiste un altro modo?
grazie in anticipo a tutti quelli che mi vogliono rispondere

Rispondi quotando