The pk_set variable is always the same object. You are just changing its properties with each iteration. So when the
pkList.Add(pk_set)
line is executed it is just adding another reference to the same object to the list. To fix this, add a new line before the first
With pk_set
that looks something like this:
pk_set = New <whatever type pk_set is>()