IEnumerable — in-memory collection. IQueryable — remote data source query.
IEnumerable:
1IEnumerable<int> numbers = new List<int> {1, 2, 3, 4, 5};23// Filtering happens in memory4var result = numbers.Where(x => x > 2);5// All data already in memory
IQueryable:
1IQueryable<User> users = dbContext.Users;23// Filtering happens in database4var result = users.Where(u => u.Age > 18);5// SQL: SELECT * FROM Users WHERE Age > 18
Key differences:
Performance: