IEnumerable
1.IEnumerable exists in System.Collections Namespace.
2.IEnumerable is best to query data from in-memory collections like List, Array etc.
3.While query data from database, IEnumerable execute select query on server side, load data in-memory on client side and then filter data.
4.IEnumerable is suitable for LINQ to Object and LINQ to XML queries.
5.IEnumerable supports deferred execution.
6.IEnumerable doesn’t supports custom query.
7.IEnumerable doesn’t support lazy loading. Hence not suitable for paging like scenarios.
8.Extension methods supports by IEnumerable takes functional objects.
StudentContext studcontext= new StudentContext();
IEnumerable
objEmp = objEmp.Take
When you check the above execution using Sql Profiler, it looks like below
SELECT [t0].[StudID], [t0].[StudName], [t0].[StudentAddress] FROM [Student] AS [t0]
WHERE [t0].[StudName] LIKE @p0
In the above Query "top 5" is missing since IEnumerable filter the records on client side.
Accessing database using IEnumerable is not recommended.
IEnumerable is inherited by IQueryable
IQueryable
1.IQueryable exists in System.Linq Namespace.
2.IQueryable can move forward only over a collection, it can’t move backward and between the items.
3.IQueryable is best to query data from out-memory (like remote database, service) collections.
4.While query data from database, IQueryable execute select query on server side with all filters.
5.IQueryable is suitable for LINQ to SQL queries.
6.IQueryable supports deferred execution.
7.IQueryable supports custom query using CreateQuery and Execute methods.
8.IQueryable support lazy loading. Hence it is suitable for paging like scenarios.
StudentContext studcontext= new StudentContext();
IQueryable
objEmp = objEmp.Take
When you check the above execution using Sql Profiler, it looks like below
SELECT Top 5 [t0].[StudID], [t0].[StudName], [t0].[StudentAddress] FROM [Student] AS [t0]
WHERE [t0].[StudName] LIKE @p0
In the above query top 5 is exists and it filters the record in database itself.
Note:
1. Both IEnumerable and IQueryable can move forward only over a collection, it can’t move backward and between the items.
2. While accessing database and Paging in Grid , IQueryable is recommended over IEnumerable.
No comments:
Post a Comment
Comments Welcome