文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>3.Linq推迟查询的执行(原创)

3.Linq推迟查询的执行(原创)

时间:2010-12-27  来源:小聪崽的一切

因此会有下面的情况发生:

 

代码
//-----------------------------------------------------------
// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .
//-----------------------------------------------------------

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

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
List
<int> list = new List<int> { 1, 2 };

var nums
= (from n in list where n < 6 select n);

Console.WriteLine(
"第一次遍历:");
foreach (var n in nums)
{
Console.WriteLine(n);
}

//添加新数据
list.Add(3);
list.Add(
4);
list.Add(
5);

Console.WriteLine(
"第二次遍历:");
foreach (var n in nums)
{
Console.WriteLine(n);
}
}
}
}

 

运行结果:

这里说明在每次迭代的时候,程序都会重新遍历一次list集合,这样我们就能实时检测出数据源的变化.

但是要注意的是:如果在查询之后调用ToArray(), ToEnumerable(), ToList()等操作的话,

数据源会重新得到一个新的名称,而第二次遍历将只对这个变了名的数据源进行遍历!!!!

 

示例如下:

代码
//-----------------------------------------------------------
// All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .
//-----------------------------------------------------------

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

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
List
<int> list = new List<int> { 1, 2 };

var nums
= (from n in list where n < 6 select n).ToList();

Console.WriteLine(
"第一次遍历:");
foreach (var n in nums)
{
Console.WriteLine(n);
}

//添加新数据
list.Add(3);
list.Add(
4);
list.Add(
5);

Console.WriteLine(
"第二次遍历:");
foreach (var n in nums)
{
Console.WriteLine(n);
}
}
}
}

 

运行结果:

两次程序只有以下一句是不一样的:

第一次:

 

var nums = (from n in list where n < 6 select n);

 

第二次:

 

var nums = (from n in list where n < 6 select n).ToList();

 

 

但在结果中可以看出,两次迭代中输出的数都一样,但是数据源的集合中的值已经改变了~

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载