Func<>委托、扩展方法、yield、linq ForEach综合运用
2024-09-24 05:55:43
1、先定义一个Model类
public class P1
{
public string name { get; set; }
public int age { get; set; }
}
2、定义一个扩展方法
作用:用于处理集合数据,通过传入一个委托来实现
注意,扩展方法必须定义在静态类中,而且方法本身也是静态的。
public static class ExtendMethod
{
public static IEnumerable<P1> Filter1(this IEnumerable<P1> p1s, Func<P1, bool> param)
{
foreach (P1 item in p1s)
{
if (param(item))
{
yield return item;
}
}
}
}
3、应用扩展方法处理数据,并且ForEach输出处理后的数据:
IList<P1> lst = new List<P1>();
lst.Add(new P1 { name = "张三", age = 19 });
lst.Add(new P1 { name = "李四", age = 20 });
lst.Add(new P1 { name = "王五", age = 28 });
lst.Add(new P1 { name = "赵六", age = 30 });
lst.Where(p => p.age > 18).Filter1(a => a.age <
30).ToList().ForEach((f) => { Console.WriteLine(f.name + "," +
f.age); });
public class P1
{
public string name { get; set; }
public int age { get; set; }
}
2、定义一个扩展方法
作用:用于处理集合数据,通过传入一个委托来实现
注意,扩展方法必须定义在静态类中,而且方法本身也是静态的。
public static class ExtendMethod
{
public static IEnumerable<P1> Filter1(this IEnumerable<P1> p1s, Func<P1, bool> param)
{
foreach (P1 item in p1s)
{
if (param(item))
{
yield return item;
}
}
}
}
3、应用扩展方法处理数据,并且ForEach输出处理后的数据:
IList<P1> lst = new List<P1>();
lst.Add(new P1 { name = "张三", age = 19 });
lst.Add(new P1 { name = "李四", age = 20 });
lst.Add(new P1 { name = "王五", age = 28 });
lst.Add(new P1 { name = "赵六", age = 30 });
lst.Where(p => p.age > 18).Filter1(a => a.age <
30).ToList().ForEach((f) => { Console.WriteLine(f.name + "," +
f.age); });
Console.ReadKey();
输出:
最新文章
- jQuery的DOM操作实例(1)——选项卡&;&;Tab切换
- Python之路,Day8 - Python基础 面向对象高级进阶与socket基础
- 关于UI系统的问题
- vim备忘
- [js开源组件开发]js手机联动选择日期 开源git
- Android 中SimpleDateFormat的使用注意
- java 中的断言assert的使用
- 在Delphi中,关于数组名称
- Install Asterisk 11 on Ubuntu 12.04 LTS
- 【双向广搜+逆序数优化】【HDU1043】【八数码】
- WinForm - 两个窗体之间的方法调用
- Struts2之环境配置
- linux下安装libcurl及开源库的一般安装步骤
- javascript 操作节点的属性
- HTTPie命令介绍
- Lodop打印连续的纸张
- Android NDK笔记
- scala 入门Eclipse环境搭建
- Storm集成Siddhi
- strncpy()函数【转】
热门文章
- mysql:启动服务时遇到的问题
- HearthBuddy BotManager
- Python——sklearn提供的自带的数据集
- hibernate对连接池的支持
- Python - 排序( 插入, 冒泡, 快速, 二分 )
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响
- Can&#39;t initialize physical volume ";/dev/sdb"; of volume group ";cinder-volumes"; without -ff /dev/sdb: physical volume not initialized.
- redis开启持久化、redis 数据备份与恢复
- .Netcore 2.0 Ocelot Api网关教程(4)- 服务发现
- Vue和其他框架的区别