以下两个代码片段之间的差异(Lambda表达式)

roc*_*ock 2 c# lambda

任何人都可以告诉我以下两个lambda表达式之间的区别:

    1. TabView mytab = TabCollection.Where(s => s.TabHeader == h).FirstOrDefault();

    2. TabView mytab = TabCollection.FirstOrDefault(s => s.TabHeader == h);
Run Code Online (Sandbox Code Playgroud)

TabCollection是TabView类型的ObservableCollection.

Ree*_*sey 5

这两个陈述将提供相同的结果.

不同之处在于如何实现结果.第二个稍微更高效,因为它不需要为Where方法生成迭代器,然后获取它的枚举器,而是可以直接枚举集合直到找到匹配.

  • 差异非常小 (3认同)
  • @TravisJ是 - 返回的第一个产量(从第一个或默认值)将"停止"Where迭代器继续.`Where`不需要检查每个项目 - 它只会检查项目,因为FirstOrDefault枚举它们,这意味着它只会检查,直到找到匹配然后停止. (2认同)