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-Myers和Ebad-Massod之外,还有返回单个值并立即执行的运算符,例如:
- 第一个,第一个默认值,最后一个,单次,单次默认值
- 平均值,计数,最大值,最小值,总和
这里有一篇很好的MSDN文章:这就是它应该如何工作的。当您迭代这些值时,将对Linq进行计算,
ToList
强制执行迭代,从而执行查询。您可以通过使用foreach
或通过查询的任何其他迭代来实现相同的结果。任何具体化结果的方法都将执行查询。