Iterate over filename
First since you only care about tif extensions just pass that into the Directory.GetFiles

foreach (string file in Directory.GetFiles(path, "*.tif"))


No need for an if statement checking extension 

Also you don't need to create a FileInfo object to get the name of the file use 

string filename = Path.GetFileName(file);
filename = filename.Substring(0, filename.IndexOf('.'));


returns you the file name without the extension so you don't need to do the array manipulation.  

If me since there is only 6 values I wouldn't do a loop statement.  You need to code each switch and set each property so the loop isn't really helping you save code nor time.  Just set them.  if they need to change in the future it's less code to change and the loop and switch would need to change as well.  

string filename = Path.GetFileName(file);
filename = filename.Substring(0, filename.IndexOf('.'));
string[] filenameAsArray = filename.Split('_');
if (filenameAsArray.Length == 6)
{
    document.part1 = filenameAsArray[0];
    document.part2 = filenameAsArray[1];
    document.part3 = filenameAsArray[2];
    document.part4 = filenameAsArray[3];
    document.part5 = filenameAsArray[4];
    document.part6 = filenameAsArray[5];
}
bool validationResults = document.ValidateFields();
if (validationResults)
{
    File.Move(file, @"path\to\destination");
}
else
{
    File.Move(file, @"path\to\errorbin");
}


I also changed your object from do to document because do to most English speakers is a verb and they not going to think it stands for document object.  Again for years later whoever looks at this to make it easier to understand.