当我想要对列表执行某些操作时,我首先会检查它是否为null
或者不包含任何元素(以免在foreach
中出现问题),通常我会使用list.Any()
。但是,哪种选项更好呢?是使用list.Count > 0
还是使用list.Any()
?
当我想要对列表执行某些操作时,我首先会检查它是否为null
或者不包含任何元素(以免在foreach
中出现问题),通常我会使用list.Any()
。但是,哪种选项更好呢?是使用list.Count > 0
还是使用list.Any()
?
List
,请使用 Count
,因为它知道它的大小。Array
,请使用 Length
。IEnumerable
,建议使用 .Any()
而不是 .Count()
,因为它会更快,因为它在检查一个项目后就停止了。另外请查看这个问题:哪种方法更好:.Any() vs .Count() > 0?
string[] fruits = {"apple", "banana", "orange"};
// 使用 Any 方法
if (fruits.Any()) {
Console.WriteLine("数组中包含元素");
}
// 使用 Count 属性
if (fruits.Count() > 0) {
Console.WriteLine("数组中包含元素");
}
// 使用 Length 属性
if (fruits.Length > 0) {
Console.WriteLine("数组中包含元素");
}
上述代码演示了如何使用 Linq 的 Any
方法、Count
属性和数组的 Length
属性来检查数组是否为空。根据 Microsoft 文档,当调用 Any
方法时,如果集合包含至少一个元素,则返回 true
,否则返回 false
。在实际使用中,此方法在遍历集合时能够提高性能,因为它只需要找到第一个元素即可返回结果。另外,当针对某些数据类型(例如数组)使用 Any
方法时,它将自动转换为 Count
或 Length
属性,因为它们具有相同的语义。 - Silvermind.Count
优先于.Any()
。有趣的是。 - Baklap4list.Count > 0
,因为它不依赖于LINQ方法,所以适用于C# 2.0。Any
,它将接受一个null
引用,并在有元素的集合中返回true。这将节省你进行空检查的时间。如果您正在使用Entity Framework并且有一个包含许多记录的巨大表,则Any()将更快。我记得有一次我想检查一个表是否为空,它有数百万行。使用Count() > 0完成需要20-30秒。但是使用Any()则是瞬间完成的。