Any 和 First(OrDefault) - 最佳实践
我不会解释 Any
和 FirstOrDefault
的作用,因为已经有两个很好的例子。有关详细信息, 请参阅 Any 和 First,FirstOrDefault,Last,LastOrDefault,Single 和 SingleOrDefault 。
我经常在代码中看到的应该避免的模式是
if (myEnumerable.Any(t=>t.Foo == "Bob"))
{
var myFoo = myEnumerable.First(t=>t.Foo == "Bob");
//Do stuff
}
它可以像这样写得更有效率
var myFoo = myEnumerable.FirstOrDefault(t=>t.Foo == "Bob");
if (myFoo != null)
{
//Do stuff
}
通过使用第二个示例,仅搜索集合一次并给出与第一个相同的结果。同样的想法可以应用于 Single
。