C# LINQ

//首先说一下匿名方法:,无名字,

//无参数匿名函数

static void Main(string[] args){
Action f1=delegate(){
console.WriteLine("我是AAA");
};//给委托赋值一个匿名方法
f1();//执行委托
}

//有参数匿名函数
static void Main(string[] args){
Action<stirng,int> f2=delegate(string n,int i)
{
     console.WriteLine($"n={n},i={i}");
};
f2("yzk",18);
}

//转换为Lambda表达式,只是将匿名方法的delegate去掉了,然后加上一个=>
Func<int,int,int> f4=(int i,int j)=>{
return i+j;
}
Console.WriteLine(f4(5,8))

//也可以省略参数类型,此方法只针对lambda表达式生效。
Func<int,int,int> f5=(i,j)=>{
return i+j;
}
using System.Linq
using System.Collections.Generic
//取出大于10的数字
static void Main(string[] args){
int [] nums=new int[]{3,4,5,7865,2,34,223};
IEnumerable<int> result=nums.Where(a=>a>10);
}

 

//基础:会委托、Lamad表达式

//使数据处理变得简单化

//统计一个字符串中每个字母出现的频率(忽略大小写),然后按照从高到低的顺序输出出现频率高于2次的单词和出现的频率

var items=s.where(c=>char.lsLetter(c))//过滤非字母

.select(c=>char.ToLower(c))//大写字母转换Wie小写

.GroupBy(c=>c)//根据字母进行分组

.Where(g=>g.Count()>2)//过滤掉出现次数<=2

.OrderByDescending(g=>g.count())//按次数排序

.Select(g=>new ({char=g.key,count=g.count()})

 

//使用自定义的扩展方法实现LINQ中的扩展方法

static IEnumerable<int> MyWhere2(IEnumerable<int> items,Func<int,bool> f)

{

foreach(int i in items){

if(f(i)==true){

yield return i;//yield return 不是返回了就退出了,而是会循环返回,直到无数据可以遍历了。

}

}

}

posted @ 2022-11-27 20:29  黄立明02  阅读(23)  评论(0编辑  收藏  举报