数据源不只是Ilist这样的,还可能是DataTable或者其他的 语言集成查询 (LINQ) 查询适用于实现 IEnumerable<(Of <(T>)>) 接口或 IQueryable 接口的数据源。DataTable 类不实现上述任何一个接口,因此您必须调用 AsEnumerable 方法来将 DataTable 用作 LINQ 查询的 From 子句中的源。 ICollection主要针对静态集合;IList主要针对动态集合 IEnumerable<T>继承自IEnumerable ICollection<T>继承自IEnumerable<T> IList<T>继承自ICollection<T> IEnumerable接口 实现了IEnumerable接口的集合表明该集合能够提供一个enumerator(枚举器)对象,支持当前的遍历集合。IEnumerable接口只有一个成员GetEnumerator()方法。 IList接口和ArrayList类的目的是实现动态数组,ArrayList是IList的一个实现。