LINQ in C#。为什么要使用IEnumerable <t>?</t>

时间:2014-02-26 06:03:16

标签: c# linq

我现在在C#中学习LINQ。我看到的所有来源都在左侧使用IEnumerable<T>。为什么他们使用这个而不是其他类型?

5 个答案:

答案 0 :(得分:2)

根据定义,IEnumerable是“公开一个枚举器,它支持对非泛型集合的简单迭代” - 因为从查询中获得的所有内容通常都是某些类型的对象,这些对象具有行(数组在通用意义),使用IEnumerable<T>帮助迭代返回的数据更有意义。

http://msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx

答案 1 :(得分:2)

IEnumerable 是一个接口,它告诉我们可以枚举一系列T实例。如果需要对集合中的每个对象执行某些操作,这是首选。

根据MSDN IEnumerable

  

公开一个枚举器,它支持一个简单的迭代   非通用集合

我还建议你通过这个CodeProject link

答案 2 :(得分:1)

由于所有集合都在实施IEnumerable<T> ,因此 LINQ方法可用于所有集合。LINQ旨在对集合进行操作,因此他们可能会选择使用IEnumerable<T>接口,因为它是所有集合类型的通用接口。

答案 3 :(得分:1)

有两个原因。

  1. IEnumerable是一个不能创建实例的接口。所以,它位于左侧。
  2. 您在LINQ中枚举的所有资源都实现了此接口。
  3. 此外,当您只想使用迭代器读取枚举而不对其进行任何修改时,可以使用此方法。

答案 4 :(得分:0)

如果linq,您对对象执行的查询不会立即执行。执行推迟到迭代以提高性能。这意味着什么时候,

var filtered = something.where(st=>st.data == mydata);

编译器不执行查询并检索对象。因此,您在filtered对象上所能做的就是迭代。其他操作(如添加,删除等)在这一点上没有意义。 IEnumerable提供了完美的界面来实现此目的。