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
C# Linq中使用哪些方法强制用户从数据库检索数据_C#_Linq_Entity Framework - Fatal编程技术网

C# Linq中使用哪些方法强制用户从数据库检索数据

C# Linq中使用哪些方法强制用户从数据库检索数据,c#,linq,entity-framework,C#,Linq,Entity Framework,使用此查询时,我不会从数据库检索数据: var query = db.Table.Where(x => x.id_category.HasValue).Select(x => x.Id); 但是如果我使用这个,我将检索数据: var dataRetrieved = query.ToList(); 还有哪些方法,如ToList(),我可以强制检索数据?选择返回一个IEnumerable,这是一个调用转换函数的值序列。所以这取决于你想要什么样的转变?你想要列表还是数组?您还可

使用此查询时,我不会从数据库检索数据:

var query = db.Table.Where(x => x.id_category.HasValue).Select(x => x.Id);

但是如果我使用这个,我将检索数据:

var dataRetrieved = query.ToList();  


还有哪些方法,如
ToList()
,我可以强制检索数据?

选择返回一个
IEnumerable
,这是一个调用转换函数的值序列。所以这取决于你想要什么样的转变?你想要列表还是数组?您还可以使用foreach循环独立地遍历和操纵每个工件。下面将让您了解如何处理您的值。

LINQ通过构建一系列查询命令来工作,并等待到最后一刻执行它们。为了强制执行,您必须请求查询“真实”数据,而不仅仅是获取数据的步骤描述

根据(我的重点):

LINQ查询总是在查询变量迭代时执行,而不是在创建查询变量时执行。

要强制立即执行不产生单例值的查询,可以对查询或查询变量调用ToList方法、ToDictionary方法或ToArray方法

您还可以通过将foreach或For Each循环紧跟在查询表达式之后来强制执行,但通过调用ToList或ToArray,可以将所有数据缓存在单个集合对象中


除了已经解释的BJ-MyersEbad-Massod之外,还有返回单个值并立即执行的运算符,例如:

  • 第一个第一个默认值最后一个单次单次默认值
此外,LINQ聚合函数返回单个值并立即执行,例如:

  • 平均值计数最大值最小值总和

这里有一篇很好的MSDN文章:

这就是它应该如何工作的。当您迭代这些值时,将对Linq进行计算,
ToList
强制执行迭代,从而执行查询。您可以通过使用
foreach
或通过查询的任何其他迭代来实现相同的结果。任何具体化结果的方法都将执行查询。