A sample of LINQ provider.
using System;
using System.Collections;
namespace LINQSample
{
class Program
{
static void Main(string[] args)
{
var myNumberServer = new MyNumberServer(323, 2);
var query = from a in myNumberServer
where a != 3
select a;
foreach(var item in query)
{
Console.WriteLine(item);
}
}
}
public class MyNumberServer
{
private readonly int _numberToServer;
private readonly int _length;
public MyNumberServer(int init, int length)
{
_numberToServer = init;
_length = length;
}
public IEnumerator GetEnumerator()
{
for (int i = 0; i < _length; i++)
{
yield return _numberToServer;
}
}
}
public static class Extensions
{
public static IEnumerable Where(this MyNumberServer source, Func<int, bool> predicate)
{
foreach (int item in source)
{
if (predicate(item))
{
yield return item;
}
}
}
public static IEnumerable Select(this MyNumberServer source, Func<object, object> selector)
{
foreach (var item in source)
{
yield return selector(item);
}
}
public static IEnumerable Cast(this MyNumberServer source)
{
foreach (var item in source)
{
yield return (int)(item);
}
}
}
}
Note: This is a sample from the book “Essential LINQ”.
