Differences between them based on their properties :
- Namespace: System.Collections Namespace
- Derives from: No base interface
- Deferred Execution : Supported
- Lazy Loading : Not Supported
- How does it work : While querying data from database, IEnumerable execute select query on server side, load data in-memory on client side and then filter data. Hence does more work and becomes slow.
- Suitable for : LINQ to Object and LINQ to XML queries.
- Custom Query : Doesn’t supports.
- Extension method parameter : Extension methods supported in IEnumerable takes functional objects.
- When to use : When querying data from in-memory collections like List, Array etc.
- Best Uses : In-memory traversal