/// <summary> /// Return the number of countries having reported per year for the area filter given /// </summary> /// <param name="areaFilter"></param> /// <returns></returns> public static IEnumerable <ReportingCountries> GetReportingCountries(AreaFilter areaFilter) { DataClassesFacilityDataContext db = getDataContext(); ParameterExpression param = Expression.Parameter(typeof(FACILITYSEARCH_MAINACTIVITY), "s"); Expression exp = LinqExpressionBuilder.GetLinqExpressionArea(areaFilter, param); // create lambda according to filters Expression <Func <FACILITYSEARCH_MAINACTIVITY, bool> > lambda = Expression.Lambda <Func <FACILITYSEARCH_MAINACTIVITY, bool> >(exp, param); IEnumerable <ReportingCountries> years = db.FACILITYSEARCH_MAINACTIVITies.Where(lambda) .GroupBy(f => f.ReportingYear) .Select(s => new ReportingCountries( s.Key, s.Select(x => x.CountryCode).Distinct().Count())); return(years); }