Linq查询的延迟执行

  Linq查询表达式在我们迭代内容前,不会真正进行运算,这叫做延迟执行。这种方式的好处是可以为相同的容器多次应用相同的Linq查询,而始终获得最新的结果。

  示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestVar
{
class Program
{
//Linq查询的延迟执行示例
static void Main(string[] args)
{
int[] intAry = new int[] { 1, 2, 3, 4, 5, 6 };

//为varSet定义查询条件
var varSet = from x in intAry
where x % 2 == 0
select x;

//输出查询结果
foreach (var v in varSet)
{
Console.Write(v.ToString()
+ " ");
}

Console.WriteLine();

//修改数组元素
intAry[0] = 8;

//输出查询结果
foreach (var v in varSet)
{
Console.Write(v.ToString()
+ " ");
}

Console.ReadKey();
}
}
}

  这段程序的输出为:

2011040520544283.gif

  可以看出,修改数组元素后,我们无需为varSet重新定义Linq查询就能使用迭代直接获取最新的结果。

  那如何让Linq查询立即执行呢?Enumerable定义了诸如ToArray<T>()、ToDictionary<TSource, TKey>()、ToList<T>()在内的许多扩展方法,它们允许我们以强类型容器来捕获Linq查询结果。然后,这个容器就不会再“连接”到Linq表达式了,可以独立操作,示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestVar
{
class Program
{
static void Main(string[] args)
{
int[] intAry = new int[] { 1, 2, 3, 4, 5, 6 };

//使用强类型立即获取查询结果
List<int> intList = (from x in intAry
where x % 2 == 0
select x).ToList();

//输出查询结果
foreach (int v in intList)
{
Console.Write(v.ToString()
+ " ");
}

Console.ReadKey();
}
}
}

转载于:https://www.cnblogs.com/free722/archive/2011/04/05/2006119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值