linq 延迟执行带来的困扰】的更多相关文章

有这样一个案例: var filteredResult = from f in orgFileList select f; ; i < WorkStatusFilters.ListWorkStatus.Count; i++) { if( !WorkStatusFilters.ListWorkStatus[i].checkStatus) filteredResult = filteredResult.Where(f => f.WorkStatusFlag != i.ToString()); }…
LINQ中大部分查询运算符都有一个非常重要的特性:延迟执行.这意味着,他们不是在查询创建的时候执行,而是在遍历的时候执行(换句话说,当enumerator的MoveNext方法被调用时).让我们考虑下面这个query: static void TestDeferredExecution() { var numbers = new List<int>(); numbers.Add(1); IEnumerable<int> query = numbers.Select(n =>…
本文来自:http://msdn.microsoft.com/zh-cn/library/bb399393(v=vs.110).aspx http://www.cnblogs.com/zhanglinfan/articles/1457068.html http://hi.baidu.com/ccitofhxxxbenwq/item/b930bca05b49f57f6cd455c6 延迟加载与立即加载 .NET Framework 4.5   其他版本   此主题尚未评级 - 评价此主题   查询…
LINQ中大部分查询运算符都有一个非常重要的特性:延迟执行.这意味着,他们不是在查询创建的时候执行,而是在遍历的时候执行(换句话说,当enumerator的MoveNext方法被调用时).让我们考虑下面这个query: ); IEnumerable<); ); // Add an extra element after the query foreach (int n in query) Console.Write(n + "|"); // 10|20| } 可以看出,我们在查询…
Linq中的绝大多数查询运算符都有延迟执行的特性,查询并不是在查询创建的时候执行,而是在遍历的时候执行,也就是在enumerator的MoveNext()方法被调用的时候执行,大说数Linq查询操作实例方法返回的都是IEnumerable<T>,所以只有在使用foreach遍历的时候,查询方法才能被真正的执行.请参考C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能 示例代码如下: List<int> list=new List&…
延迟执行是指一个表达式的值延迟获取,知道它的值真正用到. 当你用foreach循环时,表达式才真正的执行. 延迟执行有个最重要的好处:它总是给你最新的数据 实现延迟运行 你可以使用yield关键字实现延迟加载 public static class EnumerableExtensionMethods { public static IEnumerable<Student> GetTeenAgerStudents(this IEnumerable<Student> source)…
延迟执行的经典例子: 我们用 select ++i 就可以看到在foreach 时候,查询才被执行. public static void Linq99(){    int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };    int i = 0;    var q = from n in numbers select ++i;    foreach (var v in q)        Console.WriteLine("v…
有朋友下载了PHP5.3,PHP5.4版本想加载mysql支持的时候发现没有libmysql.dll文件,无法完成mysql配置,其实PHP5.3版本开始,使用mysqlnd库,不再使用libmysql.dll用来访问MySQL数据库,大大提升了PHP的数据库访问性能.且默认支持mysql,无需像libmysql.dll要手动复制到windows/system32目录下. 以前版本的PHP访问MySQL数据库,是通过MySQL数据库的libmysql client库,这个libmysql cli…
借鉴于该篇博客:http://kb.cnblogs.com/page/42581/ 先看两个方法 public class YieldClasses { public static IEnumerable<int> WithNoYied() { List<int> list = new List<int>(); for (int i = 0; i < 100; i++) { Console.Write(i.ToString()); list.Add(i); } r…
介绍重新想象 Windows 8 Store Apps 之 线程池 通过 ThreadPoolTimer 实现延迟执行 通过 ThreadPoolTimer 实现周期执行 通过 ThreadPool 实现"在线程池中找一个线程去执行指定的方法" 示例1.通过 ThreadPoolTimer 实现延迟执行(ThreadPoolTimer 在 Windows.System.Threading 命名空间下)Thread/ThreadPool/DelayTimer.xaml <Page…
Method1. performSelector方法 Method2. NSTimer定时器 Method3. NSThread线程的sleep Method4. GCD 公用延迟执行方法 - (void)delayMethod{ NSLog(@"delayMethodEnd"); } Method1:performSelector [self performSelector:@selector(delayMethod) withObject:nil/*可传任意类型参数*/ after…
前几天去国美在线面试,就遇到了上面的问题,当时是笔试,只写出来了第一种方法,现在整理了一下. //1.performSelector方法:在当前线程中执行的方法,使用默认模式,并延迟执行@selector方法. [self performSelector:@selector(runDelayMethod) withObject:nil afterDelay:2.0]; //取消之前注册的performSelector:withObject:afterDelay:这个方法 //[NSObject…
在js中,延迟执行函数有两种,setTimeout和setInterval,用法如下: function testFunction(){Console.log('hovertree.com');} setTimeout("testFunction()","6000"); //6000毫秒后执行testFunction()函数,只执行一次. setInterval("testFunction()","6000");//每隔600…
1.通用方式(并不是实时调用并且会卡顿): // 一般用于更新一些非界面上的数据 [NSTimer scheduledTimerWithTimeInterval:时间间隔 target:self selector:调用方法 userInfo:nil repeats:是否重复]; 2.动画推荐使用(流畅): // 刷新帧,默认每秒钟60次,动画推荐使用 CADisplayLink *display = [CADisplayLink displayLinkWithTarget:selfselecto…
[源码下载] 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 线程池 通过 ThreadPoolTimer 实现延迟执行 通过 ThreadPoolTimer 实现周期执行 通过 ThreadPool 实现“在线程池中找一个线程去执行指定的方法” 示例1.通过 ThreadPoolTimer 实现延迟执行(Thread…
//linq延迟查询.两次查询结果不同 List<string> l = new List<string>() { "aaa", "bbb", "ccc" }; var query = l.Select(lstr => new { Name = lstr.ToString() }); //延迟查询,此时还未真正查询产生query foreach (var item in query) //查询真正开始 { Conso…
defer用于延迟执行,可以类比于java或c++中的析构函数. 查看一段示例代码: func Contents(filename string) (string, error) { //打开文件 f, err := os.Open(filename) if err != nil { return "", err } //使用延期调用,由于defer的作用,在Contents函数执行结束完成后才会关闭文件,紧跟着open,可以防止忘掉关闭,且代码结构更清晰 defer f.Close(…
在项目测试中,我们可能会使用批量生成数据来测试程序的性能. 这里讲一个我遇到的问题,由于我们批量生成数据时基本上是瞬间完成,所以GETDATE()函数获得的时间基本上也是一样的,而我们又要求生成每条数据的时间不同,那么如何来解决这个问题? 网上搜索了很多,这里我是使用游标+waitfor来处理的: 首先来讲下游标,因为个人也是才使用游标,而且也没有深入研究. 那么游标是用来干什么的呢?一般我们使用游标是用来对查询出来的结果集进行处理的(修改,新增...). T-SQL中的游标定义在MSDN中如下…
//延迟执行 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)( * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{ //要执行的代码 });…
一般在JS页面延迟执行一些方法.可以使用以下的方法 jQuery.delay()方法简介 http://shawphy.com/2010/11/jquery-delay.html jQuery中queue和dequeue的用法 http://www.jb51.net/article/25481.htm Window.setTimeout http://www.jb51.net/article/20741.htm以下是我用到的一些例子. 复制代码代码如下: //延迟查询,传一个查询btn的ID,然…
 延迟执行可以通过以下操作实现,按照推荐的顺序列出来 1. new Handler().postDelayed(new Runnable(){ public void run() { //execute the task } }, delay); 2. mHandler.sendEmptyMessageDelayed(WIFI_GPS_STATE_ON, 4 * 1000);     3.利用定时器 TimerTask task = new TimerTask(){ public void ru…
前面的整理我们也已经说到了,使用lambda表达式的主要原因是,将代码的执行延迟到一个合适的时间点.在使用lambda表达式的时候务必记住一点就是说lambda表达式都是延迟执行的. 延迟执行代码的原因有很多,具体的如下. 1,在另外一个线程中运行代码 2,多次运行代码 3,在某个算法的正确时间点上运行代码,比如排序中的比较操作 4,当某些情况发生时才运行代码 5,只有在需要的时候才运行代码. 当我们在使用lambda表达式的时候,就应该好好的考虑下希望达到什么样的效果.这里来举一个日志的例子吧…
使用lambda表达式的主要原因是,将代码的执行延迟到一个合适的时间点. 所有的lambda表达式都是延迟执行的.毕竟,如果你希望立即执行一段代码,那就没有必要使用lambda表达式了.延迟执行代码的原因有很多,例如: 在另一个线程中运行代码多次运行代码在某个算法的正确时间点上运行代码(例如排序中的比较操作)当某些情况发生时运行代码(按钮点击,数据到达等)当你使用lambda进行编程时,应当好好考虑一下希望达到什么样的效果.举个例子:假设你需要记录一个事件的日志: logger.info("x:…
Linq指令执行分析 一.Linq中IEnumerable的结构 Linq在执行聚合操作和ToXxx系统方法之前,一直都是一个数据源和一串指令(下面的讨论都是基于未执行聚合操作和ToXxx系统方法之前). 大部分linq返回的迭代器都是一个如下的数据结构: IEnumerable: source:IEnumerable 指令:针对不同的操作,指令不同,对where来说,就是一个predicate谓词条件, 这个source字段 可以是一个简单的集合,比如List或Array等, 可以不包含指令的…
描述:项目中使用了linq,发现写的顺序不一样最后的结果也不一样,效率也不一样. Linq的执行效率对比 List<int> source = new List<int>(); var rand = new Random(); ; ) { i--; source.Add(rand.Next(, )); } Stopwatch watch = new Stopwatch(); watch.Restart(); select s; int count2 = temp2.Count();…
解决Myeclipse ctrl+h带来的困扰 myeclipse的ctrl+h搜索功能给我们来查找文件定位类的方便,但同时也给我们带来两个困扰:一是搜出来的结果往往带着svn文件,一大推svn隐藏的文件都被检索了出来而且还是默认搜索结果很麻烦,还得一一收起才能找到自己想要的文件:二是搜索出来的几个往往会在好几个文件中都存在,这时你要想一一打开对比看看哪个文件才是你需要的,但是myeclipse会给你替换着打开显示,不能平铺的打开所有的文件:下面两步配置消除你的烦恼,废话少说上图: 第一步 方法…
延迟执行的几种方法,分享一下. 1.performSelector(NSObject)方法  2.NSTimer方法  3.GCD方法  4.sleep(NSThread)方法 1.performSelector(NSObject)方法 这是iOS中常用的一种延迟执行方法. 特点:这个方法必须要在主线程中使用.可以传递参数.可以取消操作,不能暂停. //不带参数 [self performSelector:@selector(delayDo:) withObject:nil afterDelay…
HTML: <div id='allType'> <div class='allTypeHead'><span>所有分类</span></div> <ul class='allType'> <li style="background:url('__PUBLIC__/img/建筑师的非建筑.png') no-repeat 0 13px;position:relative;"><a href=&quo…
Timer继承子Thread类,是Thread的子类,也是线程类,具有线程的能力和特征.这个类用来定义多久执行一个函数. 它的实例是能够延迟执行目标函数的线程,在真正执行目标函数之前,都可以cancel它. Timer源码: class Timer(Thread): def __init__(self, interval, function, args=None, kwargs=None): Thread.__init__(self) self.interval = interval self.…
概述 项目开发中经常会用到方法的延时调用,下面列举常用的几种实现方式: 1.performSelector 2.NSTimer 3.NSThread线程的sleep 4.GCD 1.performSelector [self performSelector:@selector(delayMethod) withObject:nil/*可传任意类型参数*/ afterDelay:2.0]; 此方法是一种非阻塞的执行方式. 取消方法: 第一种: /** * 取消延迟执行 * * @param aTa…