Sobes.tech
Junior — Middle

Hoe onderscheid je IEnumerable van IQueryable en in welke gevallen gebruik je elk?

sobes.tech AI

Antwoord van AI

IEnumerable en IQueryable zijn interfaces voor het werken met collecties, maar met verschillende gedragingen en doeleinden:

  • IEnumerable<T> — wordt gebruikt om door collecties in het geheugen te itereren. Data queries worden onmiddellijk uitgevoerd, en alle LINQ-operaties worden op de clientzijde (in het geheugen) verwerkt.

  • IQueryable<T> — breidt IEnumerable uit en stelt je in staat om queries te bouwen die kunnen worden omgezet in uitdrukkingen, bijvoorbeeld SQL-query's. De uitvoering van de query wordt uitgesteld tot het moment van iteratie (lazy uitvoering), en operaties worden uitgevoerd op de gegevensbron (bijvoorbeeld, database).

Wanneer gebruiken:

  • IEnumerable — als de gegevens al in het geheugen geladen zijn of je werkt met lokale collecties.
  • IQueryable — als je een query wilt bouwen naar een externe bron (DB) en de selectie wilt optimaliseren door filtering en sortering op de server uit te voeren.

Voorbeeld:

IQueryable<User> usersQuery = dbContext.Users.Where(u => u.Age > 18);
// De databasequery wordt gevormd en uitgevoerd bij het itereren over usersQuery

IEnumerable<User> usersList = usersQuery.ToList();
// De gegevens worden in het geheugen geladen, en verdere operaties worden lokaal uitgevoerd