IEnumerable.Contains方法用于确定序列中是否存在满足指定条件的元素。该方法接受一个谓词参数,用于定义条件。
- 论坛
- IEnumerable<T>.Contains方法用于确定序列中是否存在满足指定条件的元素。该方法接受一个谓词参数,用于定义条件。
22 浏览
IEnumerable.Contains方法用于确定序列中是否存在满足指定条件的元素。该方法接受一个谓词参数,用于定义条件。
我只是想澄清一下给定的集合是否包含一个元素。
我可以通过collection.Count(foo => foo.Bar == "Bar") > 0)
来做到这一点,但这样会做一些不必要的工作-在我需要停在第一个出现的地方时遍历整个集合。
但我想尝试使用带有谓词的Contains()
,例如foo => foo.Bar == "Bar"
。
目前IEnumerable
有两个签名:
IEnumerable
.Contains(T) IEnumerable
.Contains(T, IEqualityComparer )
所以我必须指定要检查的变量:
var collection = new List() { foo, bar }; collection.Contains(foo);
或者编写自定义的IEqualityComparer
,用于对我的集合进行比较:
class FooComparer : IEqualityComparer{ public bool Equals(Foo f1, Foo f2) { return (f1.Bar == f2.Bar); //我的谓词 } public int GetHashCode(Foo f) { return f.GetHashCode(); } }
所以还有其他使用谓词的方法吗?