Func<>委托、扩展方法、yield、linq ForEach综合运用
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); });
Console.ReadKey();
输出:
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();
输出: