走进Linq-Linq大观园

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进Linq-Linq to SQL How do I(1)

走进Linq-Linq to SQL How do I(2)

走进Linq-Linq to SQL How do I(3)

走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table 的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


文章发布后大家有些人叫做,心里窃喜,不过压力也大增,我很想按照简洁明快的文风写下去,不过讲技术的文章很难不落于沉闷,所以我努力了。(题外话:这几天猛看幽默小说,想把文字写的幽默一点,开个玩笑,呵呵)

经过几天的闭关编程大师又有了一些新的觉悟了,不管对DSL还是命令式编程和函数式编程都有了新的理解。如是他又接着了漫长的云游。第一站当然就是那个曾经让他结下心结的那个刚毕业的coder。

大师:“嘿,这几日可好,还在发牢骚么?”

Coder:“不了,正好你来了,让你看看我的程序”,Coder将他的电脑屏幕转向大师,期盼的眼神表明他急切的期望得到大师的夸奖。

如是大师看到了如下一些代码:

///  
    
///  一个通用的泛型委托,代表接受一个参数并有一个返回值的方法
    
///  
    
///   输入参数类型
    
///   返回值类型
    
///   输入参数
    
///   返回值
     public   delegate  TOutput MyDelegate < TInput,TOutput > (TInput input);
    
///  
    
///  这个类是包含有对IEnumerable 接口的一系列扩展方法
    
///  因为在.net里所有的集合类都实现了IEnumerable 接口
    
///  所以对该接口的扩展将扩散到所有集合
    
///  
     public   static   class  Extension
    {
        
public   static  IEnumerable < TInput >  Where < TInput > ( this  IEnumerable < TInput >  self, MyDelegate < TInput,  bool >  filter)
        {
            
foreach  (TInput item  in  self)
                
if  (filter(item))
                    
yield   return  item;
        }
        
public   static  IEnumerable < TOutput >  Select < TInput, TOutput > ( this  IEnumerable < TInput >  self, MyDelegate < TInput, TOutput >  selector)
        { 
            
foreach (TInput item  in  self)
                
yield   return  selector(item);
        }
       
// 下面有更多的SQL风格的移植
}

下面是我做的个小测试代码:

public   class  Program
{
        
public  static  void  Main()
        {
            IList books = 
new  List { 
             
new  Book { Title =  " Inside COM " , ISBN =  " 123-456-789 " ,Price= 20  },
             
new  Book { Title =  " Inside C# " , ISBN =  " 123-356-d89 " ,Price= 100  },
             
new  Book { Title =  " Linq " , ISBN =  " 123-d56-d89 " , Price =  120  }
            };

            var result = books.Where(book => book.Title == 
" Linq " ).Select(book =>  new  { 
                Key = book.Title,Value=book.Price
            });
        }
}

你可能感兴趣的:(linq,linq大观园)