标签:res int 假设 string alt ever lap play join
一、为什么要使用LINQ
假设有一个整数类型的数组,找到里面的偶数并进行降序排序。
在C#2.0以前,如果要实现这样的功能,我们必须使用‘foreach‘或‘for‘循环来遍历数组,先找到偶数然后在降序排序,相关代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LinqOfSelectOperation { class Program { static void Main(string[] args) { // 查询出数组中的偶数并排序 int[] ints = { 5, 2, 0, 66, 4, 32, 7, 1 }; // 定义一个整数类型的集合,用来存放数组中的偶数 List<int> list = new List<int>(); // 遍历数组查询出偶数放到集合中 foreach (int i in ints) { // 如果是偶数,把偶数加入到集合中 if (i % 2 == 0) { list.Add(i); } } // 正序排序 list.Sort(); // 反转 list.Reverse(); // 输出 Console.WriteLine(string.Join(",", list)); //66,32,4,2,0 Console.ReadKey(); } } }
使用for循环很麻烦,而且不可维护和可读。C#2.0引入了delegate,可以使用委托来处理这种场景,代码如下所示:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LinqOfSelectOperation { //定义委托 delegate bool FindEven(int item); class IntExtension { public static List<int> where(int[] array, FindEven del) { List<int> result = new List<int>(); foreach (int item in array) { if (del(item)) { result.Add(item); } } return result; } } class Program { static void Main(string[] args) { // 查询出数组中的偶数并排序 int[] ints = { 5, 2, 0, 66, 4, 32, 7, 1 }; //delegate(int item){return item % 2 == 0;} 表示委托的实现 List<int> list = IntExtension.where(ints, delegate(int item) { return item % 2 == 0; }); // 正序排序 list.Sort(); // 反转 list.Reverse(); // 输出 Console.WriteLine(string.Join(",", list)); //66,32,4,2,0 Console.ReadKey(); } } }
标签:res int 假设 string alt ever lap play join
原文地址:https://www.cnblogs.com/LuckyZLi/p/12677721.html