gpt4 book ai didi

c# - Linq 性能 : Any vs. 包含

转载 作者:太空狗 更新时间:2023-10-29 22:16:20 25 4
gpt4 key购买 nike

<分区>

这个问题与this one有关,但我认为不完全相同。

给定:

class Foo
{
public string Bar { get; set; }
}
...
var c1 = new List<Foo>() { ... };
var c2 = new List<Foo>() { ... };

以下 2 个循环给出相同的结果:

  foreach (var item in c2.Where(f => c1.Any(f1 => f1.Bar.Equals(f.Bar))))
{ ... }

foreach (var item in c2.Where(f => c1.Select(f1 => f1.Bar).Contains(f.Bar)))
{ ... }

它们的速度一样快吗?

the other question的区别, 是这里额外的Select 语句是否改变了底层集合性质的重要性。

换句话说:这是否包含:

foos.Contains(foo1)

按照与此相同的 “集合类型” 操作:

foos.Select(f=>f.Bar).Contains(foo1.Bar)

我可能 - 天真的 - 想法可能是:“一旦我们落后于 Linq 的 Select,一切都只是‘列表’,所以 Any 和 Contains 都是 O(n)。”

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com