Linq to sql asp.net中的LINQ

Linq to sql asp.net中的LINQ,linq-to-sql,Linq To Sql,在LINQ中IEnumerable和iQueerable的区别是什么?我读了更多关于这方面的文章,但我不理解实践的区别。IEnumerable和IQueryable是LINQ讨论中最常用的两个术语。我在这里尝试的是,我试图根据两个接口的行为简化它们。在LINQ世界中,我们在.NET框架中通常很少有可用的提供者,比如LINQ到对象、LINQ到SQL、LINQ到XML 每个LINQ语句都返回IEnumerable。IEnumerable是分步工作的。意思是,当你写作的时候 var q = from

在LINQ中IEnumerable和iQueerable的区别是什么?我读了更多关于这方面的文章,但我不理解实践的区别。

IEnumerable和IQueryable是LINQ讨论中最常用的两个术语。我在这里尝试的是,我试图根据两个接口的行为简化它们。在LINQ世界中,我们在.NET框架中通常很少有可用的提供者,比如LINQ到对象、LINQ到SQL、LINQ到XML

每个LINQ语句都返回IEnumerable。IEnumerable是分步工作的。意思是,当你写作的时候

var q = from a in b

           where a > 5

           select a;
它根据“where”创建一个“b”列表,然后为“select”创建另一个列表。这是LINQ到对象和LINQ到XML的行为

当您使用LINQtoSQL时,它使用IQueryable。此接口继承IEnumerable,但通常任何LINQ to SQL都会在后端生成T-SQL,以便能够为我们获取数据。这将一次性评估和生成查询,并为我们提供全部数据


IEnumerable意味着我可以返回T的项目

IQueryable意味着我可以返回T的项,但我也可以接受LINQ操作(Where、Select等),我将处理并转换为幕后提供数据的任何内容

当然,IEnumerable看起来也接受LINQ操作,但区别在于它们从未被翻译,而是在内存中执行。e、 g.Where操作符只执行以下操作:

其中(IEnumerable值,Func谓词) { foreach(值中的var值) if(谓词(值)) 收益回报值;
}

事实上,接受一些答案-我会删除我的答案,直到你这么做。。可能会有重复的人!不可想象的是,这个问题不会是一个重复的问题。进行尽职调查。