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