1
12
你得枚举才能得到一个计数。其他构造(如列表)保持运行计数。 |
2
16
解决方案取决于您不想枚举整个集合的原因。 如果这是因为枚举集合的速度可能很慢,那么没有比这更快的解决方案。如果可能,您可能会考虑改用ICollection。除非枚举速度非常慢(例如它从磁盘读取项目),否则速度不应该是问题。 如果是因为枚举集合需要更多的代码,那么它已经以.count()扩展方法的形式为您编写了。只需使用myEnumerable.Count()。 如果这是因为您希望能够在计数后枚举集合,那么.count()扩展方法允许这样做。您甚至可以对正在枚举的集合调用.count(),它将从计数之前的位置继续进行。例如:
会给出结果的
如果这是因为枚举有副作用(例如写入磁盘/控制台),或者依赖于在计数和枚举(例如从磁盘读取)之间可能发生变化的变量[N.B.如果可能,我建议重新考虑体系结构,因为这会导致很多问题],那么考虑的一种可能性是将枚举读取到I中。内部存储器。例如:
以上所有假设都假定您不能更改类型(即,它是从您不拥有的库中返回的)。如果可能,您可能会考虑将其更改为使用ICollection或IList(ICollection的作用域比IList更广),后者具有Count属性。 |
3
14
在任何情况下,都必须循环通过它。LINQ提供
|
4
6
用这个。
它将返回计数。 |
5
1
还有ilist或icolection,如果您想使用一个仍然有些灵活的结构,但也有您需要的特性。它们都意味着不可数。 |
6
1
它还取决于你想通过计算得到什么。如果您有兴趣查找可枚举集合是否包含任何元素,可以使用 myEnumerable.any()覆盖myEnumerable.count(),前者将生成第一个元素,后者将生成所有元素。 |
7
1
IEnumerable必须遍历每个项。以获得完整的计数。 如果您只需要检查IEnumerable中是否存在一个或多个项,则更有效的方法是检查是否存在任何项。any()只检查是否有一个值,并且不会循环遍历所有内容。 IEnumerable myStrings=new list()“one”、“two”、“three” bool hasValues=myStrings.any(); |
8
0
不能与Linq一起使用,因为调用.Count(…)会枚举集合。如果遇到无法两次迭代集合的问题,请尝试以下操作:
|
9
0
如果你需要计数然后循环,你最好有一个列表。
如果使用count检查成员,则可以使用
|
10
0
最佳解决方案-正如我认为的,是执行以下操作:
|
Imad · Linq扩展方法没有使用Object类的Equals 1 年前 |
user8512043 · 根据每个元素中的数字对列表进行排序 2 年前 |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |