c#委托 ,自定义函数中使用委托,列表数据排序
1.委托
Func<int, int, int> t = ( j, i ) => i + j;//自定义委托 Func 表示有返回值, 返回两个的和 Console.WriteLine( t(6,4));//输出 10 Func<int, bool> a = delegate (int j) { return j > 0; }; Console.WriteLine(a(6)); Action<int> b = delegate (int i) //自定义委托 使用Action表示无返回值 { if (i > 0) { Console.WriteLine($"{i}>0"); } else { Console.WriteLine($"{i}<=0"); } }; int[] num = new int []{ 11,12,90,-2, 0, 4, 2, 5, 7, 9 };//输出数组中 大于等于3的数,并按照升序排列 foreach (var item in num.Where(t => t >= 3).OrderBy(t=>t)) { Console.WriteLine(item); } Console.WriteLine("---------------------------------------------------"); foreach (var item in myWhere(num,t=>t>3)) //调用自定义的函数 myWhere { Console.WriteLine(item); } /// <summary> /// 自定义函数 使用有返回值的委托作为参数 , /// 输出数组中 大于等于3的数,并按照升序排列 /// </summary> /// <param name="items"></param> /// <param name="f"></param> /// <returns></returns> static IEnumerable<int> myWhere(IEnumerable<int> items, Func<int,bool> f) { List<int> list = new List<int>(); foreach (var item in items) { if (f(item)) { list.Add(item); } } return list.OrderBy(t=>t); }
2.排序
1 var items2= list.0rderByDescending(e=>Guid. NewGuid());//随机排序 2 var items = list.0rderBy(e => e.Age).ThenBy(e => e.Salary); //先按照年龄升序,如果年龄相同 按照 工资排序
3. List分页
List<T> dataList; // 要分页的数据列表
int pageIndex; // 当前页码,从1开始
int pageSize; // 每页的数据数量
var pagedData = dataList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); //skip 表示跳过,take表示取数据