Interface Scenario IEnumerable, IEnumerable<T> The only thing you want is to iterate over the elements in a collection. You only need read-only access to that collection. ICollection, ICollection<T> You want to modify the collection or you care about its size. IList, IList<T> You want to modify the collection and you care about the ordering and / or positioning of the elements in the collection. List, List<T> Since in object oriented design you want to depend on abstractions instead of implementations, you should never have a member of your own implementations with the concrete type List/List.
IList
- IList exists in System.Collections Namespace.
- IList is used to access an element in a specific position/index in a list.
- Like IEnumerable, IList is also best to query data from in-memory collections like List, Array etc.
- IList is useful when you want to Add or remove items from the list.
- IList can find out the no of elements in the collection without iterating the collection.
- IList supports deferred execution.
- IList doesn't support further filtering.
IEnumerable
- IEnumerable exists in System.Collections Namespace.
- IEnumerable can move forward only over a collection, it can’t move backward and between the items.
- IEnumerable is best to query data from in-memory collections like List, Array etc.
- IEnumerable doesn't support add or remove items from the list.
- Using IEnumerable we can find out the no of elements in the collection after iterating the collection.
- IEnumerable supports deferred execution.
- IEnumerable supports further filtering.
- While query data from database, IEnumerable execute select query on
server side, load data in-memory on client side and then filter data.
IEnumerable is suitable for LINQ to Object and LINQ to XML queries.
- IEnumerable doesn’t supports custom query.
- IEnumerable doesn’t support lazy loading. Hence not suitable for paging like scenarios.
- Extension methods supports by IEnumerable takes functional objects.
IQueryable
- IQueryable exists in System.Linq Namespace.
- IQueryable can move forward only over a collection, it can’t move backward and between the items.
- IQueryable is best to query data from out-memory (like remote database, service) collections.
- While query data from database, IQueryable execute select query on server side with all filters.
- IQueryable is suitable for LINQ to SQL queries.
- IQueryable supports deferred execution.
- IQueryable supports custom query using CreateQuery and Execute methods.
- IQueryable support lazy loading. Hence it is suitable for paging like scenarios.
- Extension methods supports by IQueryable takes expression objects means expression tree.
0 comments:
Post a Comment