小编gar*_*arg的帖子

Any()是否会成功停止?

更具体一点:Any(IEnumerable collection, Func predicate)一旦谓词对一个项目产生了真值,Linq扩展方法是否会停止检查集合中的所有剩余元素?

因为我不想花很多时间来弄清楚我是否需​​要做真正昂贵的零件:

if(lotsOfItems.Any(x => x.ID == target.ID))
    //do expensive calculation here
Run Code Online (Sandbox Code Playgroud)

因此,如果Any始终检查源中的所有项目,这可能最终浪费时间而不是仅仅是:

var candidate = lotsOfItems.FirstOrDefault(x => x.ID == target.ID)
if(candicate != null)
     //do expensive calculation here
Run Code Online (Sandbox Code Playgroud)

因为我很确定它FirstOrDefault一旦得到结果就会返回,只有Enumerable在集合中没有找到合适的条目时才会继续通过整体.

有没有Any人有关于这种决定的内部运作的信息,或者有人可以提出解决方案吗?

此外,一位同事提出了类似的建议:

if(!lotsOfItems.All(x => x.ID != target.ID))
Run Code Online (Sandbox Code Playgroud)

因为这应该是一旦条件第一次返回假就停止但是我不确定,所以如果有人能够对此有所了解,那将是值得赞赏的.

c# linq

4
推荐指数
1
解决办法
431
查看次数

为什么用'\ 0'替换文件名中的无效字符?

我在同事的一个项目中偶然发现了这一点:

foreach (var invalidChar in Path.GetInvalidFileNameChars())
    fileName = fileName.Replace(invalidChar, '\0');
Run Code Online (Sandbox Code Playgroud)

gerenal的想法是显而易见的,但我想知道为什么他选择用null字符替换无效字符而不是'常规'字符或只是空字符串.

我猜这个选择有很好的理由(写这篇文章的人是我们团队的老人),我只想知道这个原因是什么.

.net c#

1
推荐指数
1
解决办法
140
查看次数

标签 统计

c# ×2

.net ×1

linq ×1