Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
Learn about the LINQ quantifier operators, Any, All, and Contains.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Now that we've got the most
commonly used query operators down.
0:04
Where, order by, and select.
0:08
It's time to dive and
0:10
explore the rest of the query
operators that Lync has to offer.
0:11
These next operators allow us to perform
more complex queries on our data.
0:15
Some of the operators to follow
are more common than others.
0:20
I have to check out the documentation for
Lync all the time.
0:25
It's not your job as a developer to
memorize all these operators, but
0:29
know they exist and
when to use them to solve a problem.
0:33
Let's take a quick look at an overview
article to see what I mean.
0:38
Here we've got the categories of all
the operators we'll be going over.
0:42
The first type of operators we'll
be covering is quantifiers.
0:46
We can use quantifiers to
determine if a sequence or
0:50
collection has objects that
meet certain criteria.
0:53
It's a little bit like the where operator,
but instead of returning the objects that
0:57
meet the criteria, the quantifiers return
a boolean value like true or false.
1:01
There are three quantifier
operators in Lync.
1:07
Any, all and contains.
1:10
Any and contains checks to see if
at least one object matches, and
1:14
all checks to see if
all the objects match.
1:19
The any operator is sometimes
used to check if something exists
1:22
before doing some kind of operation
like adding an object to a collection.
1:26
First, we need to load up our
birds again in workspaces.
1:31
You know the drill, C#.
1:37
LoadAssembly("BirdWatcher.dll").
1:40
Then, using BirdWatcher.
1:50
And var birds =
BirdRepository.LoadBirds().
1:55
Okay.
2:05
So if we were about to try and add a new
bird to the BirdWatcher data, we might
2:06
wanna check if there exists beforehand so
we wouldn't have a duplicate.
2:10
We can use the any operator to see if
any birds exist with the same name.
2:15
We'll need to pass it a predicate
delegate just like the where method.
2:19
BIrds.Any where b
2:23
goes to b.Name equals Crow.
2:28
True.
2:37
So, if the bird's list has a bird object
with the name crow, it returns true.
2:37
We should only add a crow if one doesn't
exist, so we would use it like this.
2:43
If there are no birds where any of
2:48
the birds goes to b.Name equals
2:52
Crow Then
2:57
birds.add, new bird where
3:04
Name equals Crow, and close.
3:10
So we should have only one crow.
3:17
Yep.
3:21
You can also use any without an argument,
3:23
to see if there's anything at all
in the collection, birds.any.
3:25
What do you think this will return?
3:29
True.
We've got all about seven birds.
3:32
Now, contains is similar to any, but
instead of using a predicate delegate,
3:35
we pass an object to
the method to check against.
3:41
Let's create a sparrow,
3:44
new Bird where the Name = Sparrow and
3:49
its Color is Brown.
3:56
So, we would use it like, if there
are no birds, where Contains a sparrow.
4:00
Then, let's see if I can use
the up arrow to get my birds.Add.
4:11
There we go.
4:17
We would add a Sparrow and
the Color should be Brown.
4:19
So now,
we should have a sparrow at the end.
4:32
On the flip side, if we will need to make
sure all the objects in a collection
4:37
meet a condition, we'd use all.
4:40
Behind the scenes it's,
the exact opposite of any.
4:43
So we could write our previous check for a
bird named sparrow with the all operator.
4:46
Birds.All, where b goes to
4:52
b.Name is not equal to Sparrow.
4:57
And that's false because
there's one that is a sparrow.
5:02
But which one would be faster?
5:05
It would be dependent on how many
objects are in the collection, and
5:07
how likely the condition would pass or
fail.
5:10
When any is called on a collection,
it evaluates the predicate on
5:14
each of the elements until one of them
passes, and then it stops evaluating.
5:17
This is called short circuit evaluation.
5:22
And with the all operator, as soon as
it finds an element that doesn't fit
5:25
the predicate it stops evaluating.
5:30
So, if it's more likely that
the condition would prove true early on,
5:32
it's good to use any.
5:36
But if it's more likely that
the condition would prove false, use all.
5:37
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up