I need just to clarify that given collection contains an element.
I can do that via collection.Count(foo => foo.Bar == "Bar") > 0)
but it will do the unnecessary job - iterate the whole collection while I need to stop on the first occurrence.
But I want to try to use Contains()
with a predicate, e.g. foo => foo.Bar == "Bar"
.
Currently IEnumerable<T>.Contains
has two signatures:
IEnumerable<T>.Contains(T)
IEnumerable<T>.Contains(T, IEqualityComparer<T>)
So I have to specify some variable to check:
var collection = new List<Foo>() { foo, bar }; collection.Contains(foo);
or write my custom IEqualityComparer<Foo>
which will be used against my collection:
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(); } }
So are there any other methods to use predicate?
enumerable. Any() is the cleanest way to check if there are any items in the list.
To check for an element in a string, use the Contains() method. The following is our string array. string[] arr = { "Java", "C++", "Python"}; Now, use Contains() method to find a specific string in the string array.
The Any method checks whether any of the element in a sequence satisfy a specific condition or not. If any element satisfy the condition, true is returned.
Select(x => new { x, count = x. tags. Count(tag => list. Contains(tag)) }) .
.Any(predicate)
sounds like what you want; returns bool
, returning true
as soon as a match is found, else false
. There is also:
.All(predicate)
which behaves in a similar way, returning false
as soon as a non-match is found, else true
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With