FindAll()和Linq的Where()在效果上有啥区别吗?

Gromwell 2009-07-07 10:28:00
我感觉一样啊,请教大家
...全文
1220 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LQknife 2009-07-07
  • 打赏
  • 举报
回复
findall和where对同一集合来说没有快慢一说,
findall是直接返回一个包含满足条件的结果集
而where返回的只是一个查询变量,只有你调用foreach的时候才会
去执行查询,要想和findall效果一样还得 where(XX).ToList();
Gromwell 2009-07-07
  • 打赏
  • 举报
回复
因为是新学,还看不懂2楼给的意思啊,自己再去研究研究

能不能简单的说,findall和where那个更快呢?
fengying0529 2009-07-07
  • 打赏
  • 举报
回复
学习了
acqy 2009-07-07
  • 打赏
  • 举报
回复
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

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧