List的扩展方法Where问题

better_chaner 2011-12-20 11:17:31
有如下两段代码
1.

ChannelInfo channel=null;
foreach (ChannelInfo item in _channelInfo)
{
if (item.Key == key)
{
channel=item;
break;
}
}


2.
ChannelInfo channel = _channelInfo.Where(s => s.Key == key).First();


我的理解是 因为Where方法是取整个列表中符合要求的数据,然后First取第一个,这样的效率和第一个比起来,是第一个效率高吗?


...全文
634 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2011-12-20
  • 打赏
  • 举报
回复
ChannelInfo channel = _channelInfo.Where(s => s.Key == key).First();

这个要小心没找到,返回null,最好用FirstOrDefault.

zhangzhen900530 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q107770540 的回复:]

ChannelInfo channel = _channelInfo.FirstOrDefault(s => s.Key == key);
你如果只想获取第一个,没必要用WHERE 直接FirstOrDefault即可
效率方面,半斤八两,都需要循环遍历
[/Quote]
+1
q107770540 2011-12-20
  • 打赏
  • 举报
回复
ChannelInfo channel = _channelInfo.FirstOrDefault(s => s.Key == key);
你如果只想获取第一个,没必要用WHERE 直接FirstOrDefault即可
效率方面,半斤八两,都需要循环遍历

110,538

社区成员

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

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

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