C#之委托
下面来调用这个方法,看一下委托的具体使用方法
/// <summary> /// 实体模型 /// </summary> public class Student { public string Id { get; set; } public string Name { get; set; } }
/// 扩展方法
public static class DelegateExtend
{
/// 模仿Linq的Where操作
/// <typeparam name="T"></typeparam>
/// <param name="scoure">数据源</param>
/// <param name="func">委托(自定义bool条件)</param>
public static IEnumerable<T> ExtWhere<T>(this IEnumerable<T> scoure, Func<T, bool> func)
{
//遍历数据源的数据
foreach (var item in scoure)
{
//请求委托完成条件的筛选返回bool
bool bResult = func(item);
//把通过筛选提交的数据源,返回出去
if (bResult)
{
yield return item;
}
}
}
}
/// 扩展方法
public static class DelegateExtend
{
/// 模仿Linq的Where操作
/// <typeparam name="T"></typeparam>
/// <param name="scoure">数据源</param>
/// <param name="func">委托(自定义bool条件)</param>
/// <returns></returns>
public static IEnumerable<T> ExtWhere<T>(this IEnumerable<T> scoure, Func<T, bool> func)
{
//遍历数据源的数据
foreach (var item in scoure)
{
//请求委托完成条件的筛选返回bool
bool bResult = func(item);//查看 id是不是等于1,如果等于1就直接yield直接返回
//把通过筛选提交的数据源,返回出去
if (bResult)
{
yield return item;
}
}
}
}
//查询出所有数据 IEnumerable<Student> student = sql.QueryList<Student>();
第一种 //定义一个匿名方法,并赋值给委托 这个写法挺新奇
//传入一个类型,返回一个bool值,后面用deletegate() 直接就行 Func<Student, bool> func = delegate(Student s) { //自定义代码逻辑,返回bool类型 return s.Id.Equals("1"); };
//传入委托 IEnumerable<Student> list = student.ExtWhere(func); //第二种方法,使用linq语法(自定义逻辑) IEnumerable<Student> list1 = student.ExtWhere(p => p.Id.Equals("1"));
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。

浙公网安备 33010602011771号