internal static List <ReturnData> FillRangeData(DateTime dateFrom, DateTime dateTo, int top, Func <RegionData, float> func)
 {
     return(dateFrom.Date == dateTo.Date
         ? DataReaderRegion
            .ReadRegionsAtDate(dateFrom)
            .Select((curr) => new ReturnData()
     {
         data = curr.data,
         value = func.Invoke(curr),
         lbl = curr.denominazione_regione
     })
            .OrderByDescending(v => v.value)
            .Take(top)
            .ToList()
         : DataReaderRegion
            .ReadRegionsAtRangeDate(dateFrom, dateTo)
            .GroupBy(g => g.codice_regione)
            .Select((curr) => new ReturnData()
     {
         data = curr.Max(r => r.data),
         value = curr.Sum(r => func.Invoke(r)),
         lbl = curr.Max(r => r.denominazione_regione)
     })
            .OrderByDescending(v => v.value)
            .Take(top)
            .ToList());
 }
        internal static Dictionary <int, List <ReturnData> > FillRangeDataDiff(DateTime dateFrom, DateTime dateTo, int top, Func <RegionData, float> func)
        {
            var list = dateFrom.Date == dateTo.Date
                ? DataReaderRegion
                       .ReadRegionsAtDate(dateFrom)
                       .ToList()
                : DataReaderRegion
                       .ReadRegionsAtRangeDate(dateFrom, dateTo)
                       .ToList();

            return(null);
            //return list.Aggregate(new Dictionary<List<int>, ReturnData>(), (acc, v) => { acc.Add(v.codice_regione, new ReturnData() { data = v.data, value = func.Invoke(v), lbl = v.data.ToString("dd/MM/yy") });  return acc; });
        }