On your specific request, here are the three validation checks to be placed at the list question itself (self)— each kept separate so you can attach meaningful error/warning messages to help enumerators understand what went wrong.
The first thing I’d always check in any list question like this is uniqueness of names, so that two members do not end up with identical entries. For example:
/* Use all items entered, remove any whitespace and put to upper */
self.Select(x =>
System.Text.RegularExpressions.Regex.Replace(x.Item2, @"\s+", "")
.ToUpper()
).Distinct().Count() == self.Count()
A small note: think carefully before enforcing very strict name-format rules.
In many surveys these requirements can become burdensome for enumerators, especially the upper/lowercase rule — this is something that can easily be cleaned during data processing. Enforcing too much structure during interview may slow the interview down or lead to unnecessary corrections. That’s at least my two cents