LINQ中的AsQueryable和AsEnumerable方法最大区别在于,AsQueryable是在数据库端进行的数据处理后再返回,而AsEnumerable则刚好相反,大部分情况下,我们应该使用AsQueryable,比如下面例子:
using (testContext context = new testContext()) { var query = (from item in context.Users.AsQueryable() where item.id > 10 select item.id).ToList(); var query2 = (from item in context.Users.AsEnumerable() where item.id > 10 select item.id).ToList(); }
生成的SQL如下:
--AsQueryable Select [Extent1].[id] AS [id] FROM [dbo].[User] AS [Extent1] Where [Extent1].[id] > 10 --AsEnumerable Select [Extent1].[id] AS [id], [Extent1].[usn] AS [usn], [Extent1].[pwd] AS [pwd], [Extent1].[created] AS [created] FROM [dbo].[User] AS [Extent1]
你好