Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Estrarre dei valori da due select con count e group by e aggiungerli ad una lista

    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
    Ultima modifica di djciko; 18-10-2017 a 11:28

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    per favore, cerca di scrivere i post in modo piu' comprensibile, dividendo il codice dal testo con i tag [CODE ] senza spazio.

    Ora ho fatto io, la prossima volta chiudo

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.