Linq foreach语句概述

开发 后端
这里介绍Linq foreach语句也是检索查询结果的地方。例如,在上一个查询中,迭代变量 num 保存了返回的序列中的每个值(一次保存一个值)。

Linq 有很多值得学习的地方,这里我们主要介绍Linq foreach语句,包括介绍foreach循环来强制执行查询等方面。

实际的查询执行会延迟到在Linq foreach语句中循环访问查询变量时发生。此概念称为“延迟执行”,下面的示例对此进行了演示:

  1. //Query execution.   
  2. foreach (int num in numQuery)  
  3. {  
  4. Console.Write("{0,1} ", num);  

Linq foreach语句也是检索查询结果的地方。例如,在上一个查询中,迭代变量 num 保存了返回的序列中的每个值(一次保存一个值)。

由于查询变量本身从不保存查询结果,因此可以根据需要随意执行查询。例如,可以通过一个单独的应用程序持续更新数据库。在应用程序中,可以创建一个检索***数据的查询,并可以按某一时间间隔反复执行该查询以便每次检索不同的结果。

对一系列源元素执行聚合函数的查询必须首先循环访问这些元素。Count、Max、Average 和 First 就属于此类查询。由于查询本身必须使用 foreach 以便返回结果,因此这些查询在执行时不使用显式Linq foreach语句。另外还要注意,这些类型的查询返回单个值,而不是 IEnumerable 集合。下面的查询返回源数组中偶数的计数:

  1. var evenNumQuery =   
  2. from num in numbers  
  3. where (num % 2) == 0  
  4. select num;  
  5.  
  6. int evenNumCount = evenNumQuery.Count(); 

若要强制立即执行任意查询并缓存其结果,可以调用 ToList<(Of <(TSource>)>) 或 ToArray<(Of <(TSource>)>) 方法。

  1. List<int> numQuery2 =  
  2. (from num in numbers  
  3. where (num % 2) == 0  
  4. select num).ToList();  
  5.  
  6. //or like this:  
  7. //numQuery3 is still an int[]  
  8.  
  9. var numQuery3 =  
  10. (from num in numbers  
  11. where (num % 2) == 0  
  12. select num).ToArray(); 

此外,还可以通过在紧跟查询表达式之后的位置放置一个 foreach 循环来强制执行查询。但是,通过调用 ToList 或 ToArray,也可以将所有数据缓存在单个集合对象中。

【编辑推荐】

  1. LinqDataSource控件剖析
  2. Linq To Sql学习经验
  3. Linq String类型浅析
  4. Linq组合查询之集成数据库语言查询
  5. Linq To SQL输出SQL语句剖析
责任编辑:佚名 来源: 博客园
相关推荐

2009-09-10 11:10:21

Linq Librar

2009-09-10 13:42:47

Linq UserIn

2009-05-11 10:40:36

.NETLINQforeach

2009-09-18 13:44:38

LINQ设计模式

2009-09-10 16:28:17

LINQ查询

2009-09-16 17:21:53

LINQ遍历

2009-09-14 09:55:55

Linq基本语法

2009-09-11 12:13:40

LINQ to SQL

2009-09-14 15:15:45

LINQ技术

2009-09-08 16:08:44

Linq使用order

2009-09-18 16:20:36

LINQ基础

2009-09-18 16:07:10

Linq Where操

2009-09-16 15:53:49

Linq创建xml文档

2009-09-09 10:58:58

Linq结果集形状

2009-09-15 13:53:53

Linq To Sql

2009-09-17 16:46:34

Linq to sql

2009-09-10 13:13:47

Linq Func<T

2009-09-09 16:01:21

Linq实体继承使用

2009-09-17 11:35:40

Linq匿名类型

2009-09-09 16:07:16

Linq实体关系
点赞
收藏

51CTO技术栈公众号