Enumerable.Where<TSource> 方法:http://msdn.microsoft.com/zh-cn/library/bb534803.aspx
MSDN中显示的是,这个方法有两个参数啊,那怎么:
string[] strs ={ "Suyama", "Fuller", "Callahan", "Michael", "Janet" };  var result1 = strs.Where(p => p.Length>5);  where方法后面怎么只有一个参数呢,只有一个λ表达式呢

解决方案 »

  1.   

    第一个是参数类型,第二个是返回类型。
    这里的参数类型是string,返回类型是bool.
      

  2.   

    这个 是如果 strs  里的字符串 有5个字符 以上就返回true 的意思吧。想学习 LINQ  看这里:http://www.cnblogs.com/lyj/archive/2008/03/25/1119671.html这个讲的挺好的。
      

  3.   

    扩展方法,第一个参数前面加了this表示该方法扩展至每一个参数的类型上面
    var result1 = strs.Where(p => p.Length>5);   
    写成通常的调用方式就是:
    var result1 = Where(strs, p => p.Length>5);   第一种连缀的写法还可以继续调用其他的扩展方法,可读性也更好
      

  4.   

    此where非彼where
    public static IEnumerable<TSource> Where<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
    )是一个定义。请注意第一个参数是具有 this 属性的。当你用 strs.where(...) 的方式调用时,第一个参数就是 strs ,是隐式传入的。你去补习一下 c++ 的this概念及实现,你就明白了。
      

  5.   

    是两个参数,扩展方法会隐式传递this参数...因为当前实例只可能有一个,不需要显式声明...
      

  6.   

    还以为lz说的是fun<T,TResult>的参数...