Hjælp til at lave dette med Linq.
Hejsa.Jeg har følgende stykke kode som virker og egentlig giver mig det resultat jeg ønsker. Men det er bare mega langsomt. (Det tager ca. 8 sekunder). Der ligger ca. 7500 records i mit datsæt, så det burde jo gå meget hurtigt.
using (HSSQLDataContext dc = new HSSQLDataContext(Configuration.ConnectionString))
{
List<Municipality> result = new List<Municipality>();
CheckSecurity(publickey, hash, dc);
System.Linq.IQueryable<Hjertestarter> DbAeds = null;
DbAeds = dc.Hjertestarters.Where(a => a.Statustypeid == Guid.Parse(Constants.IDs.InoperationID));
foreach (Hjertestarter h in DbAeds)
{
if (h.AEDKommune != null && h.AEDKommune.Kommune != null && h.AEDKommune.Kommune.nr != null)
{
if (result.FirstOrDefault(a => a.nr == h.AEDKommune.Kommune.nr) == null)
result.Add(new Municipality() { nr = h.AEDKommune.Kommune.nr, navn = h.AEDKommune.Kommune.navn, Region = h.AEDKommune.Kommune.region, NumberOfAED = 1 });
else
result.FirstOrDefault(a => a.nr == h.AEDKommune.Kommune.nr).NumberOfAED++;
}
}
return result;
}
Egentlig kunne jeg godt tænke mig at lave det mere linq style.
Men jeg kan kun komme hertil :
System.Linq.IQueryable<Hjertestarter> DbAeds = null;
DbAeds = dc.Hjertestarters.Where(a => a.Statustypeid == Guid.Parse(Constants.IDs.InoperationID));
return (from Kommune k in dc.Kommunes orderby k.navn select new Municipality { nr = k.nr, navn = k.navn, NumberOfAED = k.AEDKommunes.Count, Region = k.region }).ToList<Municipality>();
Denne kode virker sådan set også. Men som det ses i første kode eksempel, så indeholder DbAeds kun records med en bestemt status.
Og i mit resultat ønsker jeg at "NumberOfAED" kun indeholder antallet de hjertestartere som er aktive, og altså ligger i DbAeds datasættet.
Så det jeg vel har brug for er et eller andet inner select syntaks, som kan selecte antallet af hjertestartere ud af DbAeds som har samme .Aedkommune.Kommune.nr værdi.
Håber alt dette giver lidt mening.
I mit hoved ville det se nogenlunde sådan ud :
return (from Kommune k in dc.Kommunes orderby k.navn select new Municipality { nr = k.nr, navn = k.navn, NumberOfAED = (from Hjertestarter h in DbAeds.Where(a => a.AEDKommune.Kommune.nr == k.nr)).Count(), Region = k.region }).ToList<Municipality>();
Men jeg har lidt problemer med at finde den rigtige syntaks :-)
Nogen som kan hjælpe?
Mvh.
Lasse