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

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

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

Linq方法求偶数:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _00_Test
{
class Program
{
static void Main(string[] args)
{
//Linq方法求偶数
int[] nums = { , , , , , , , , , };
List<int> list = new List<int>();
//where关键字
foreach (int n in nums.Where(e => e % == ))
{
Console.WriteLine(n);
}
Console.ReadKey();
}
}
}

模拟Linq方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _00_Test
{
public delegate bool MyDel(int n);
class Program
{
static void Main(string[] args)
{
int[] nums = { , , , , , , , , , };
int[] ns = MyWhere(nums, e => e % == );
Console.ReadKey();
}
public static int[] MyWhere(int[] nums, MyDel myDel)
{
List<int> list = new List<int>();
foreach (int n in nums)
{
//执行if时,会跳到"e % 2 == 0"语句,myDel(n)就相当于e => e % 2 == 0。
if (myDel(n))
{
list.Add(n);
}
}
return list.ToArray();
}
}
}

正常求水仙花数:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _06_Lambda水仙花数
{
class Program
{
public delegate List<int> MyDel(List<int> n);
static void Main(string[] args)
{
List<int> nums = new List<int>();
for (int i = ; i < ; i++)
{
nums.Add(i);
}
int[] nums2 = GetFlowers(nums.ToArray());
}
public static int[] GetFlowers(int[] nums)
{
List<int> list = new List<int>();
for (int i = ; i < nums.Length; i++)
{
//如123
int num = nums[i];
int n1 = num % ;
int n2 = num / % ;
int n3 = num / ;
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()));
if (num == num2)
{
list.Add(num);
}
}
return list.ToArray();
}
}
}

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _00_Test
{
public delegate bool MyDel(int n);
class Program
{
static void Main(string[] args)
{
//生成100到1000的整数
List<int> nums = new List<int>();
for (int i = ; i < ; i++)
{
nums.Add(i);
}
//e=>{},大括号中,判断参数e是否符合水仙花条件,返回bool值。
int[] ns = MyWhere(nums.ToArray(), e =>
{
int n1 = e % ;
int n2 = e / % ;
int n3 = e / ;
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()));
return num2 == e;
});
Console.ReadKey();
}
public static int[] MyWhere(int[] nums, MyDel myDel)
{
List<int> list = new List<int>();
foreach (int n in nums)
{
//执行if时,会跳到"e % 2 == 0"语句,myDel(n)就相当于e => {}。
if (myDel(n))
{
list.Add(n);
}
}
return list.ToArray();
}
}
}

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. 【java】深入了解JAVA可变长度的参数

    到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而形参的数目是在定义方法时 ...

  2. 用copy 还是 strong?

    NSArray与NSMutableArray用copy修饰还是strong 这个是原文  http://blog.csdn.net/winzlee/article/details/51752354 一 ...

  3. macOS SIP 权限设置

    1.macOS SIP 权限设置 对于 macOS 10.11+ 用户,由于系统启用了 SIP(System Integrity Protection), 导致 root 用户也没有权限修改 /usr ...

  4. Mac MySQL 数据库管理(关系型数据库管理系统)

    1.管理准备工作 1)管理数据库准备工作 下载相关软件 mysql-workbench-community-6.3.10-macos-x86_64.dmg Oracle 官网 MySQL 官网 MyS ...

  5. MYSQL-使用mysqldump创建数据库快照

    对已经有数据的mysql库创建主从的时候,可以使用mysqldump创建数据库快照 #--master-data选项会自动加上开启复制需要的"change master to"语句 ...

  6. 如何调试bash脚本

    Bash 是Linux操作系统的默认Shell脚本.Shell是用来处理操作系统和用户交互的一个程序.Shell的脚本可以帮助用户自动化地和操作系统进行交互.你也可以理解为一种脚本式的编程.即然有编程 ...

  7. Java使用reids,以及redis与shiro集成

    什么是redis:redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(so ...

  8. Java – How to get current date time

    Java – How to get current date time 1. Code SnippetsFor java.util.Date, just create a new Date() Dat ...

  9. Spring boot validation校验

    使用 Hibernate validator 的步骤:1. 在 Pojo 类的字段上, 加上 Hibernate validator 注解2. 在Controller 函数的形参前加上 @Valid ...

  10. Sql 查询当天、本周、本月记录

    --查询当天: select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info wh ...