Untested
List<Int32> multiObject = ((List<Int32>)favoriteDocumentsField.Value);
foreach (int docID in multiObject) {
Console.WriteLine("Artifact: {0} Field: {1} Value: {2}", employee.ArtifactID, favoriteDocumentsField.Name, docID);
}
I've dropped writing the index value from your WriteLine as it no longer exists. If you really want that index value you're better leaving it as a for loop. You could have index as its own variable and increment it inside the foreach, but there is not point in doing that when you can keep it as a for loop instead.