NetInverse Developers Blog

May 3, 2010
Category: .Net — Tags: — admin @ 11:24 pm

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”.

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

©2009 NetInverse. All rights reserved. Powered by WordPress