1、Where操作符
Where操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果。
例如,
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { class Program { static void Main(string[] args) { List<int> listInt = new List<int>(); //List<T>类实现了IEnumerable<T>接口,因此它也可以使用IEnumerable<T>的扩展方法 listInt.Add(1); listInt.Add(4); listInt.Add(5); listInt.Add(12); listInt.Add(15); //外部定义方法为委托赋值 IEnumerable<int> IEnum1 = listInt.Where<int>(GetBiggerThanTen); foreach (int i in IEnum1) { Console.WriteLine(i); } Console.WriteLine("=============================="); //匿名方法为委托赋值 IEnumerable<int> IEnum2 = listInt.Where<int>( delegate (int input) { if (input > 10) { return true; } return false; }); foreach (int i in IEnum2) { Console.WriteLine(i); } Console.WriteLine("=============================="); //Lambda表达式为委托赋值 IEnumerable<int> IEnum3 = listInt.Where<int>(m => m > 10); foreach (int i in IEnum3) { Console.WriteLine(i); } Console.WriteLine("=============================="); var Arr = listInt.Where(m => m > 10); foreach (var i in Arr) { Console.WriteLine(i); Console.ReadKey(); } } public static bool GetBiggerThanTen(int input) { if (input > 10) { return true; } return false; } } }
2、Select操作符
Select操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中的元素类型相同,也可以不同。
例如,
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { class Program { static void Main(string[] args) { List<People> pList = new List<People>(); People p1 = new People(1, "C", 21); People p2 = new People(1, "Java", 22); People p3 = new People(1, "Python", 23); pList.Add(p1); pList.Add(p2); pList.Add(p3); IEnumerable<string> IEP = pList.Select(p => p.Name); //查询的是元素的姓名属性 foreach (string str in IEP) { Console.WriteLine(str); //输出C Java Python } //此处必须使用var,因为是匿名类型,无法写成IEnumerable<T>的形式 var newList = pList.Select((m, i) => new { index = i, m.Name }); //输入元素与下标,返回一个新的匿名类型的集合 foreach (var item in newList) { Console.Write(item.Name); //输出 CJavaPython } Console.ReadKey(); } } } public class People { public People(int id, string name, int age) { this.Id = id; this.Name = name; this.Age = age; } public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } } }