我感觉一样啊,请教大家

解决方案 »

  1.   

    FindAll是.net 2.0中的东西,而Where是为了linq而实现的扩展方法,是3.5中的东西。static void Main(string[] args)
    {
        List<int> il = new List<int>();
        for (int i = 0; i < 100; i++)
            il.Add(i);
        List<int> f1 = il.FindAll(item => item % 2 == 0);
        var f2 = il.Where(item => item % 2 == 0);
        foreach (int fi1 in f1)
            Console.Write("{0} ", fi1);
        Console.WriteLine();
        foreach (int fi2 in f2)
            Console.Write("{0} ", fi2);
    }
    从使用上看,两者都是使用item=>item%2==0这一lambda语句作为参数,但是两者却并不相同,前者使用的是Predicate<T>委托,而后者却是Func<T, bool>委托。
    有关这两个委托的介绍,您可以参考:http://www.sunnychen.org/article.asp?id=86
      

  2.   

    因为是新学,还看不懂2楼给的意思啊,自己再去研究研究能不能简单的说,findall和where那个更快呢?
      

  3.   

    findall和where对同一集合来说没有快慢一说,
    findall是直接返回一个包含满足条件的结果集
    而where返回的只是一个查询变量,只有你调用foreach的时候才会
    去执行查询,要想和findall效果一样还得 where(XX).ToList();