Continuing in our weekly blog post series that highlights a few of the new image[5]_thumb[2]_thumb[2]_thumbadditions to the Framework Design Guidelines 2nd edition.. This content is found in the LINQ section of Chapter 9: Common Design Patterns.

Supporting LINQ through IEnumerable<T>

DO implement IEnumerable<T> to enable basic LINQ support.

Such basic support should be sufficient for most in-memory data sets. The basic LINQ support will use the extension methods on IEnumerable<T> provided in the .NET Framework. For example, simply defineing as follows:

public class RangeOfInt32s : IEnumerable<int> {
  
public IEnumerator<int> GetEnumerator() {…}
  
IEnumerator IEnumerable.GetEnumerator() {…}
}

Doing so Allows for the following code, despite the fact that RangeOfInt32s did not implement a Where method:.

var a = new RangeOfInt32s();
var b = a.Where(x => x>10);

RICO MARIANI

Keeping in mind that you’ll get your same enumeration semantics, and putting a Linq façade on them does not make them execute any faster or use less memory.