Let’s say that you have two lists or two arrays that you
wish to combine. One has a list of first
names, the other a list of last names.
The list items are in the correct order so that the first name would
match the last name for a given ordinal number.
But the lists may not have the same lengths (i.e. one list is not as
complete as the other). We wish to match
all of the available first and last names until we run out of matching pairs.
So, what do we do?
For two arrays, we could use a “for int” loop. We could get the size of each array by calling
its Length property. And then we can compare which length is smaller; and use
that number as our loop’s upper boundary.
We could then use the indexer to refer to each element in turn. But this solution is rather inelegant.
For two lists, we should not use a “for int” loop, since
lists do not have the concept of indexers.
We cannot refer to individual elements of the list via an index. We can instead use a “foreach” loop. But how do you refer to corresponding elements
from 2 lists with each loop iteration?
This is where the Linq’s Zip method comes in very handy. With the Zip method, we can apply a specific
function to the corresponding elements of two sequences and produce a sequence
of the results.
Using the above scenario as an example, where we have 5
first names but only 4 last names, we can write the following code:
The Output is below.
You will notice that the Zip function stopped after its 4th
iteration. In this way, we don’t have
any incomplete names.
That’s it for now. I hope
this tip has been super helpful.
No comments:
Post a Comment