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;
}
}
}
}