<分区>
我需要检查一个项目是否不存在于 C# 的项目列表中,所以我有这一行:
if (!myList.Any(c => c.id == myID)))
Resharper 建议我将其更改为:
if (myList.All(c => c.id != myID)))
我可以看到它们是等价的,但为什么它建议更改?第一次实现是否由于某种原因变慢了?
<分区>
我需要检查一个项目是否不存在于 C# 的项目列表中,所以我有这一行:
if (!myList.Any(c => c.id == myID)))
Resharper 建议我将其更改为:
if (myList.All(c => c.id != myID)))
我可以看到它们是等价的,但为什么它建议更改?第一次实现是否由于某种原因变慢了?
最佳答案
表达式的可读性对我来说是个人意见。
我会读这个
if (!myList.Any(c => c.id == myID)))
因为“我的元素不在收藏中”。这哪里
if (myList.All(c => c.id != myID)))
读作“集合中的所有项目都与我的项目不同吗”。
如果我想通过我的 linq 查询问的“问题”是“我的项目不在列表中吗”,那么第一个查询更适合我想问的问题。第一个查询前面的!
没有问题。
关于c# - 为什么 Resharper 建议我将 "not any equal"简化为 "all not equal"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705046/