IEnumerable 是可枚举的所有非泛型集合的基接口公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。
IEnumerable和IEnumerable接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单的迭代,IEnumerable和IEnumerable接口是.NET Framework中最基本的集合访问器。它定义了一组扩展方法,用来对数据集合中的元素进行遍历、过滤、排序、搜索等操作。
IEnumerable接口是非常的简单,只包含一个抽象的方法Get IEnumerator(T),它返回一个可用于循环访问集合的IEnumerator对象。
LINQ的全称是Language Integrated Query,
中文译成“语言集成查询”。LINQ作为一种查询技术,首先要解决数据源的封装,大致使用了三大组件来实现这个封装,分别是LINQ to Object、LINQ to ADO.NET、LINQ to XML。
LINQ的查询由3基本部分组成:获取数据源,创建查询,执行查询。
// 1,获取数据源
List<int> numbers = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
// 2,创建查询
var numQuery = from num in numbers
where num % 2 == 0
select num;
// 3,执行查询
foreach (var num in numQuery)
{
Console.WriteLine("{0,1}", num);
}
在 LINQ 中,查询的执行与查询本身截然不同;换句话说,如果只是创建查询变量,则不会检索任何数据。
**Linq的数据源要求必须实现IEnumerable或IEnumerable接口,**数组隐式支持这个接口。numQuery叫做查询变量,它存储了一个查询表达式。注意,声明查询变量并不会执行查询,真正的执行查询延迟到了foreach语句中。