Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是LINQ to对象还是LINQ提供程序?_Linq_Linq To Objects_Linq Query Syntax - Fatal编程技术网

是LINQ to对象还是LINQ提供程序?

是LINQ to对象还是LINQ提供程序?,linq,linq-to-objects,linq-query-syntax,Linq,Linq To Objects,Linq Query Syntax,我有点困惑,在LINQtoObject中,我们使用内存数据来执行由c#语言处理的Linq查询 当我编写一个基于内存数据执行的Linq查询时,为什么使用提供程序(Linq to Object)?Linq to Objects不是Linq提供程序。它是IEnumerable上LINQAPI的一个实现。只要正确命名方法并接受正确的参数,LINQAPI实际上可以在任何类型上实现。也就是说,与LINQto对象相关的LINQ提供程序非常接近。当源代码是IQueryable且编译器生成表达式树时,将使用提供程

我有点困惑,在LINQtoObject中,我们使用内存数据来执行由c#语言处理的Linq查询


当我编写一个基于内存数据执行的Linq查询时,为什么使用提供程序(Linq to Object)?

Linq to Objects不是Linq提供程序。它是IEnumerable上LINQAPI的一个实现。只要正确命名方法并接受正确的参数,LINQAPI实际上可以在任何类型上实现。也就是说,与LINQto对象相关的LINQ提供程序非常接近。当源代码是IQueryable且编译器生成表达式树时,将使用提供程序。表达式树可以编译为委托,因此编译方法的作用类似于LINQ提供程序


还请注意,在实践中,“LINQProvider”通常仅用于表示LINQAPI的实现。这有点类似于“参数”和“参数”如何互换使用,尽管差别很小。

LINQ to Objects不是LINQ提供程序。它是IEnumerable上LINQAPI的一个实现。只要正确命名方法并接受正确的参数,LINQAPI实际上可以在任何类型上实现。也就是说,与LINQto对象相关的LINQ提供程序非常接近。当源代码是IQueryable且编译器生成表达式树时,将使用提供程序。表达式树可以编译为委托,因此编译方法的作用类似于LINQ提供程序


还请注意,在实践中,“LINQProvider”通常仅用于表示LINQAPI的实现。这有点类似于“参数”和“参数”如何互换使用,尽管差别很小。

不,Linq to Object不是提供程序,它不必依赖任何其他中间提供程序来运行查询(Linq to Object)

为了更清楚地理解它,我们必须理解提供者实际上是什么。提供者基本上是实现IQueryProvider和IQueryable接口的实现,这主要将linq查询转换为提供者理解的内容。例如,当您选择LINQ to SQL查询时,您的查询将转换为/转换为SQL,因为您的提供者(在本例中)只理解SQL

当您对内存中的数据集合运行查询时,C#不必将linq查询转换为其他查询


正如@Stillgar提到的“当源是可查询的时使用提供者”。当您处理内存中的数据时,您的源基本上是IEnumerable。

否,Linq to Object不是提供程序,它不必依赖任何其他中间提供程序来运行查询(Linq to Object)

为了更清楚地理解它,我们必须理解提供者实际上是什么。提供者基本上是实现IQueryProvider和IQueryable接口的实现,这主要将linq查询转换为提供者理解的内容。例如,当您选择LINQ to SQL查询时,您的查询将转换为/转换为SQL,因为您的提供者(在本例中)只理解SQL

当您对内存中的数据集合运行查询时,C#不必将linq查询转换为其他查询

正如@Stillgar提到的“当源是可查询的时使用提供者”。当您处理内存中的数据时,您的源基本上是IEnumerable的