1
97
你可以这样做:
编辑 :请注意,如果基础源实际具有fast count属性,则只使用.count方法将很快。上面的一个有效的优化方法是检测一些基类型并简单地使用那些基类型的.count属性,而不是.any()方法,但如果不能保证,则返回到.any()。 |
2
14
我会在您似乎已经确定的代码上做一个小的添加:也检查
|
3
8
这让你吃惊吗?我想是为了
编辑@ Matt:
是的,当然有。这就是我的意思。实际上,它使用
|
4
6
我刚刚写了一个快速测试,试试这个:
第二个几乎慢了三倍。) 用堆栈、数组或其他场景再次尝试秒表测试,这实际上取决于列表的类型,因为它们证明了计数要慢一些。 所以我想这取决于你使用的列表类型! (只是指出,我把2000多个对象放在列表中,计数速度仍然更快,与其他类型相反) |
5
4
所以只需使用
这是因为它有一个名为count的数据成员,每当列表中添加或删除某些内容时,该成员都会更新,所以当您调用
|
6
3
@让我吃惊的是,在我的测试中,我将列表传递给一个接受
我只能假设IEnumerable的count()扩展方法正在执行以下操作:
…换句话说,一点运行时优化对于
/编辑@konrad+1伙伴-你说的对,更有可能是在
|
7
2
如果有多个项目,第二个选项会更快。
例如,假设枚举有1000个项。
如果使用其中一个谓词重写,则情况可能更糟-count()仍然必须检查每个项,即使只有一个匹配项。 你习惯了使用任何一个-它确实有意义并且可读。 一个警告:如果您有一个列表,而不仅仅是一个IEnumerable,那么使用该列表的Count属性。 |
8
1
好的,那么这个怎么样?
编辑:我刚刚意识到有人已经画出了这个解决方案的草图。有人提到any()方法可以做到这一点,但为什么不自己做呢?当做 |
9
1
另一个想法:
不过,我更喜欢any()方法。 |
10
1
这对于使其与实体框架协同工作至关重要:
|
11
0
如果我用count()检查linq在数据库中执行“select count(*)…”,但我需要检查结果是否包含数据,我决定引入firstordefault()而不是count(); 以前
后
|
12
0
|
13
0
下面是我对丹涛答案的实现,允许一个谓词:
|
14
-1
|
15
-3
|
16
-5
此扩展方法适用于我:
|
Imad · Linq扩展方法没有使用Object类的Equals 1 年前 |
user8512043 · 根据每个元素中的数字对列表进行排序 2 年前 |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |