说明(2017-11-22 18:15:48):

1. Lambda表达式里面用了匿名委托,感觉理解起来还是挺难的。求偶数的例子模拟了Linq查询里的一个where方法。

2. 蒋坤说求水仙花数那个例子,“能看就看,看不懂就算了!”T_T

Linq方法求偶数:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace _00_Test
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. //Linq方法求偶数
  13. int[] nums = { , , , , , , , , , };
  14. List<int> list = new List<int>();
  15. //where关键字
  16. foreach (int n in nums.Where(e => e % == ))
  17. {
  18. Console.WriteLine(n);
  19. }
  20. Console.ReadKey();
  21. }
  22. }
  23. }

模拟Linq方法:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace _00_Test
  7. {
  8. public delegate bool MyDel(int n);
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. int[] nums = { , , , , , , , , , };
  14. int[] ns = MyWhere(nums, e => e % == );
  15. Console.ReadKey();
  16. }
  17. public static int[] MyWhere(int[] nums, MyDel myDel)
  18. {
  19. List<int> list = new List<int>();
  20. foreach (int n in nums)
  21. {
  22. //执行if时,会跳到"e % 2 == 0"语句,myDel(n)就相当于e => e % 2 == 0。
  23. if (myDel(n))
  24. {
  25. list.Add(n);
  26. }
  27. }
  28. return list.ToArray();
  29. }
  30. }
  31. }

正常求水仙花数:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace _06_Lambda水仙花数
  7. {
  8. class Program
  9. {
  10. public delegate List<int> MyDel(List<int> n);
  11. static void Main(string[] args)
  12. {
  13. List<int> nums = new List<int>();
  14. for (int i = ; i < ; i++)
  15. {
  16. nums.Add(i);
  17. }
  18. int[] nums2 = GetFlowers(nums.ToArray());
  19. }
  20. public static int[] GetFlowers(int[] nums)
  21. {
  22. List<int> list = new List<int>();
  23. for (int i = ; i < nums.Length; i++)
  24. {
  25. //如123
  26. int num = nums[i];
  27. int n1 = num % ;
  28. int n2 = num / % ;
  29. int n3 = num / ;
  30. int num2 = Convert.ToInt32(Math.Pow(Convert.ToDouble(n1), Convert.ToDouble()) + Math.Pow(Convert.ToDouble(n2), Convert.ToDouble()) + Math.Pow(Convert.ToDouble(n3), Convert.ToDouble()));
  31. if (num == num2)
  32. {
  33. list.Add(num);
  34. }
  35. }
  36. return list.ToArray();
  37. }
  38. }
  39. }

Lambda表达式求水仙花,把上面的求偶数改了一下e=>{}大括号里面的内容就可以了,这么看似乎是简单复用了一些:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace _00_Test
  7. {
  8. public delegate bool MyDel(int n);
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. //生成100到1000的整数
  14. List<int> nums = new List<int>();
  15. for (int i = ; i < ; i++)
  16. {
  17. nums.Add(i);
  18. }
  19. //e=>{},大括号中,判断参数e是否符合水仙花条件,返回bool值。
  20. int[] ns = MyWhere(nums.ToArray(), e =>
  21. {
  22. int n1 = e % ;
  23. int n2 = e / % ;
  24. int n3 = e / ;
  25. int num2 = Convert.ToInt32(Math.Pow(Convert.ToDouble(n1), Convert.ToDouble()) + Math.Pow(Convert.ToDouble(n2), Convert.ToDouble()) + Math.Pow(Convert.ToDouble(n3), Convert.ToDouble()));
  26. return num2 == e;
  27. });
  28. Console.ReadKey();
  29. }
  30. public static int[] MyWhere(int[] nums, MyDel myDel)
  31. {
  32. List<int> list = new List<int>();
  33. foreach (int n in nums)
  34. {
  35. //执行if时,会跳到"e % 2 == 0"语句,myDel(n)就相当于e => {}。
  36. if (myDel(n))
  37. {
  38. list.Add(n);
  39. }
  40. }
  41. return list.ToArray();
  42. }
  43. }
  44. }

C#学习笔记(29)——Linq的实现,Lambda求偶数和水仙花数的更多相关文章

  1. 【Unity 3D】学习笔记29:游戏的例子——简单的小制作地图

    无论学习.只看不练是坏科学. 因此,要总结回想这怎么生产MMROPG小地图的游戏.于MMROPG游戏类,在游戏世界中行走时导致各地,通常在屏幕的右上角,将有一个区域,以显示当前的游戏场景微缩.在游戏世 ...

  2. [原创]java WEB学习笔记29:Cookie Demo 之自动登录

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. Entity Framework学习笔记(四)----Linq查询(1)

    请注明转载地址:http://www.cnblogs.com/arhat 从本章开始,老魏就介绍一下Entity Framework使用Linq来查询数据,也就是Linq To Entity.其实在E ...

  4. Entity Framework学习笔记(五)----Linq查询(2)---贪婪加载

    请注明转载地址:http://www.cnblogs.com/arhat 在上一章中,我们使用了Linq对Entity Framework进行了一个查询,但是通过学习我们却发现了懒加载给我来的性能上的 ...

  5. LinQ实战学习笔记(一) LINQ to (Objects, XML, SQL) 入门初步

    LINQ对于笔者来说, 优美而浓缩的代码让人震惊. 研究LINQ就是在艺术化自己的代码. 之前只是走马观花学会了基本的语法, 但是经常在CSDN看到令人惊讶自叹不如的LINQ代码, 还是让人羡慕嫉妒恨 ...

  6. LinQ实战学习笔记(四) LINQ to Object, 常用查询操作符

    这一篇介绍了下面的内容: 查询object数组 查询强类型数组 查询泛型字典 查询字符串 SelectMany 索引 Distinct操作符 排序 嵌套查询 分组 组连接 内连接 左外连接 交叉连接 ...

  7. Linux学习笔记29——IPC状态命令

    一 IPC IPC是进程间通讯,在前面,我们相继学习了进程间通讯机制有信号量,内存共享,消息队列.状态命令(ipcs)和删除命令(ipcrm)提供了一种检查和清理IPC机制的方法. 二 状态命令 1 ...

  8. Kali学习笔记29:默认安装漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 默认安装漏洞: 早期Windows默认自动开启很多服务 ...

  9. python学习笔记(十三)之lambda表达式

    lambda表达式: 用法 lambda x : 2 * x + 1 其中:前面是参数,后面是返回值. >>> def ds(x): ... return 2 * x + 1 ... ...

随机推荐

  1. HDU 2208 唉,可爱的小朋友(DFS)

    唉,可爱的小朋友 Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. php如何在某个时间上加一天?一小时? 时间加减(转)

    <?php date_default_timezone_set('PRC'); //默认时区 echo "今天:",date("Y-m-d",time() ...

  3. python学习笔记——爬虫学习中的重要库urllib

    1 urllib概述 1.1 urllib库中的模块类型 urllib是python内置的http请求库 其提供了如下功能: (1)error 异常处理模块 (2)parse url解析模块 (3)r ...

  4. linux手工释放内存

    先使用sync命令以确保文件系统的完整性,sync 命令运行 sync 子例程,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node.已延迟的块 I/O 和读写映射文件. 再执行下面任意一条命 ...

  5. Sails入门指南

    1.全局观:sails理念,框架结构 2.试用sails的scaffolding工具,创建model,创建controller, 3.启动server,试用blueprint, 4.进阶: 4.0 数 ...

  6. Linux中SFTP命令

    sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. 1.常用登陆方式: 格式:sftp <user>@< ...

  7. 启动和停止kafka 及kafka manager

    启动kafka: sh /app/pet_kafka_xxxx_cluster/bin/kafka-server-start.sh -daemon /app/pet_kafka_xxxx_cluste ...

  8. Intel CPU命名规则

    intel的几代CPU中,后缀字母主要有以下几种:M:笔记本专用CPU,一般为双核,M前面一位数字是0,意味着是标准电压处理器,如果是7,则是低电压处理器.U:笔记本专用低电压CPU,一般为双核,U前 ...

  9. Eclipse maven问题汇总

    在使用eclipse+maven的过程中,遇到一系列问题,先汇总记录如下: 1. 在java工程中,缺少Maven依赖: 这个问题比较棘手,一般都对eclispe的工程结构不是很了解,后来经过长时间的 ...

  10. hbase ERROR: wrong number of arguments (3 for 4)

    hbase(main):036:0> get 'ddl', 'example', 'info:age'COLUMN                                         ...