Ciao a tutti;
ho una tabella con degli elementi che si chiamano dossier che hanno una data di creazione.
Dovrei creare una funzione dove gli passo l'id del cliente che mi ritorni una lista con tutti i dossier creati in due differenti anni
quindi diciamo che passo due int anni alla funzione
quello che mi restituisce stavo pensando di metterlo in un oggetto cosi composto
codice:public class StatDifferenceDateDto { public int MonthPrev { get; set; } public int YearPrev { get; set; } public int AmountPrev { get; set; } public int MonthPost { get; set; } public int YearPost { get; set; } public int AmountPost { get; set; } }
dal db ho estratto queste due query
codice:SELECT count (month( [CreationDate] ) ) as QuantitaCreati,month( [CreationDate] ) as numeroMese,YEAR( [CreationDate] ) FROM [dbo].[Dossier] AS [Extent1] where YEAR(CreationDate)= 2017 group by month( [CreationDate]),YEAR( [CreationDate]) SELECT count (month( [CreationDate] ) ) as QuantitaCreati,month( [CreationDate] ) as numeroMese,YEAR( [CreationDate] ) FROM [dbo].[Dossier] AS [Extent1] where YEAR(CreationDate)= 2016 group by month( [CreationDate]),YEAR( [CreationDate] )
quindi poi vorrei aggiungere i risultati alla lista in un ciclo for pensavo
andando a mettere al mese 1 2017 (gennaio) la quantita di dossier creati (QuantitaCreati) e poi per lo stesso mese 1 2016 la quantita crati
purtroppo non essendo esperto di linq sto avendo difficoltà a creare le due select in linq
uso un context cosi
codice:using (var context = new ApplicationDbContext()) { var dossier1 = from p in context.Dossiers p.CreationDate.Year == fromPrevYear where p.CreationDate.Year == fromPrevYear group p by new { Column1 = (int?)SqlFunctions.DatePart("month", p.CreationDate), Column2 = (int?)SqlFunctions.DatePart("year", p.CreationDate) } into g select new { QuantitaCreati= g.Count(p => SqlFunctions.DatePart("month", p.CreationDate) != null), mese = g.Key.Column1, anno = g.Key.Column2 } }
dopo di che pensavo di trasformarla in un array o di ciclarla con un for tipo da 1 a 12 e quindi come prendere da
dossiers1 il valore QuantitaCreati
ho visto che si puo anche convertire la select in .Array non so se è una buona idea per ciclare tipo
la stessa select per l'altro anno
una cosa del genere
codice:for (int m = 1; m <= 12; m++ ) { result.Add(new StatistiquesDifferenceDateDto { AmountPrev= dossiers1(m).QuantitaCreati AmountPost = dossiers2(m).QuantitaCreati } }
spero di essere stato abbastanza chiaro con quello che vorrei fare.
Potete darmi dei suggerimenti?
Grazie

Rispondi quotando