0) 做到这一点但它会完成不必要的工作 - 迭代整个集合-6ren">
gpt4 book ai didi

c# - IEnumerable.包含谓词

转载 作者:IT王子 更新时间:2023-10-29 04:10:24 25 4
gpt4 key购买 nike

我只需要澄清一下,给定的集合包含一个元素。

我可以通过 collection.Count(foo => foo.Bar == "Bar") > 0) 做到这一点但它会完成不必要的工作 - 迭代整个集合,而我需要在第一次出现时停止。

但我想尝试使用 Contains()带有谓词,例如foo => foo.Bar == "Bar" .

当前 IEnumerable<T>.Contains有两个签名:

  • IEnumerable<T>.Contains(T)

  • IEnumerable<T>.Contains(T, IEqualityComparer<T>)

所以我必须指定一些变量来检查:

var collection = new List<Foo>() { foo, bar };
collection.Contains(foo);

或者写下我的习惯IEqualityComparer<Foo>将用于我的收藏:

class FooComparer : IEqualityComparer<Foo>
{
public bool Equals(Foo f1, Foo f2)
{
return (f1.Bar == f2.Bar); // my predicate
}

public int GetHashCode(Foo f)
{
return f.GetHashCode();
}
}

那么predicate还有其他使用方法吗?

最佳答案

.Any(predicate)

听起来像你想要的;返回 bool,一旦找到匹配就返回 true,否则返回 false。还有:

.All(predicate)

它的行为方式类似,一旦发现不匹配就返回 false,否则返回 true

关于c# - IEnumerable<T>.包含谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328760/

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