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]
你好