You have nicely read to rank count into the variable `rankCount`, but later, you are writing `index % 13`. It is not immediately clear where this number comes from. Use the variable there too.

Since these numbers never change and are well known for a 52-card deck, you could also simply define them as constants.
``` c#
const int RankCount = 13;
const int SuitCount = 4;
const int DeckCount = RankCount * SuitCount;  
```

---

I usually do not use `var` for built in types. You do not save a lot of typing by writing `int` or `string` instead of `var` and it is easier to read.

---

The two integer operators `%` and `/` are complementary and play well together.
``` c#
var rank = (Ranks)(index % RankCount);
var suit = (Suits)(index / RankCount);
```
Note that the integer division truncates the result.
This makes the `rankIteration` variable superfluous.

Alternatively, you could also use two nested loops, looping over suits and ranks.

---

The canonical way of looping a number range is
``` c#
for (int index = 0; index < DeckCount; index++)
{
    ...
}
```
It unifies and standardizes the declaration and initialization of the loop variable, the loop condition and incrementing the loop variable. Also, it scopes the loop variable locally to the loop.