C#夯实基础-Lambda在List中的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#夯实基础-Lambda在List中的使用相关的知识,希望对你有一定的参考价值。
参考技术A 在C#中基本类型比如List ,Dictionary,数组等都有委托来实现相关的操作。此时Lambda表达式就可以使用了.代码
查询当前List每项包含o字符的所有项
在List这个基本类型有一个方法FindAll的基本方法
可以发现FindAll中使用了一个委托
参数 match 是一个 Predicate 委托,用于定义要搜索的元素应满足的条件。
Predicate是返回bool型的一个委托
最终的代码是
返回的结果是:
同样的方法,我们可以查看比如List的其他使用了委托的方法,都可以使用Lambda表达式来对List进行操作。
其他的方法,可以参考MSDN或者在当前的List的Find方法F1进行C#本身已经定义的方法参数
List.Find查找一个元素
List.Sort排序方法
另外说明一下,委托的作用就是将实现交给用户 ,本身只是起到一个关键返回结果的的作用,根据返回结果,对象根据结果进行相应的调整。
30天C#基础巩固----Lambda表达式
这几天有点不在状态,每一次自己很想认真的学习,写点东西的时候都会被各种小事情耽误,执行力太差。所以自己反思了下最近的学习情况,对于基础的知识,可以从书中和视频中学习到,自己还是需要注意下关于自己以前做的项目中的一些知识点,那些才是HR提问的关键所在。今天都6.4号了,时间过的真是快呀,学校7.18左右放假,自己打算去西安看看,能不能找到一个实习工作,不行的话只能等到大四的第一学期去走校招。可以我们大四的第一学期还有很多课,真不知道老师是如何想的。所以在这还剩不到快2个月的时间里,把自己想要学习的东西好好的学习下,提高自己的执行力和自控力。
委托,匿名函数,Lambda表达式
关于委托前面有说的,其实就是那么几个步骤,但是想在项目中熟练的使用,不是那么简单的,这些知识点都不一些不太容易掌握的,很抽象,需要通过长时间的项目代码练习才可以更好的理解里面前辈们所提倡的观点思路。
匿名函数----实现1--100的和。
/// <summary> /// 匿名方法 /// </summary> class Program { //定义委托。 public delegate int GetSumNum(int min,int max); static void Main(string[] args) { //匿名方法,必须使用delegate来定义,参数和返回值必须和定义的委托一样。 GetSumNum _getSum = delegate(int min,int max) { int sum = 0; for (int i =min; i <=max; i++) { sum += i; } return sum; }; int a=_getSum(1,100); //调用匿名函数,传递参数。 Console.WriteLine(a); Console.ReadKey(); } }
通过Lambda表达式来得到结果,比较二者的区别和相似的地方。
/// <summary> /// 匿名方法 /// </summary> class Program { //定义委托。 public delegate int GetSumNum(int min, int max); static void Main(string[] args) { //Lambda表达式 注意:要是方法体中代码很多,我们就可以写一个{ }来表示。 GetSumNum _getSum = (min, max) => { int sum = 0; for (int i = min; i <= max; i++) { sum += i; } return sum; }; int a = _getSum(1, 100); //调用匿名函数,传递参数。 Console.WriteLine(a); Console.ReadKey(); } }
注意:
我们使用Lambda表达式的时候,(a,b)=>{}; a,b是我们的参数,{}里面是我们需要写的代码段,要是只有一句代码直接写在后面不需要写{}。
eg:得到1--1000之间的水仙花数。
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
class Program { public delegate bool GetNum(int num); static void Main(string[] args) { List<int> listNum=new List<int>(); for (int i = 100; i <1000; i++) { listNum.Add(i); } //将Lambda的方法传递进去,在MyWhere中进行执行。 int[] ns=MyWhere(listNum.ToArray(), e => { //123 int n1 = e%10; // 3 int n2 = e/10%10; // 2 int n3 = e/100; // 1 return (n1*n1*n1 + n2*n2*n2 + n3*n3*n3) == e; }); Console.WriteLine("100--1000之间的水仙花数------:"); for (int i = 0; i <ns.Length; i++) { Console.WriteLine(ns[i]); } Console.ReadKey(); } //实现委托的方法 public static int[] MyWhere(int[] num,GetNum ck) { List<int> list=new List<int>(); for (int i = 0; i <num.Length; i++) { if (ck(num[i])) { list.Add(num[i]); } } return list.ToArray(); } }
以上是关于C#夯实基础-Lambda在List中的使用的主要内容,如果未能解决你的问题,请参考以下文章