Validation default value I want to check if all items of a list meet a set of criteria:

bool AreValid(list&lt;string&gt; vals)
{
   bool allValid=true;

   foreach(string val in vals)
   {
       if(!condition1)
          ...
          allValid=false;
       else if(!condition2)
          ...
          allValid=false;
   }

   return allValid;

} 


The reason I can't use LINQ All() is that for each failed condition I'm doing some job.

is it safe to set allValid as true by default?
It's safe. A few things to consider: 


When the list is empty you might want to return false.
Consider using an abstract data type (instead of string) which stores your data (the string) and move the validation logic to there.
As Jeff Vanzella already suggested, you can return false immediately when you now that a value is not valid. It's faster and easier to read:

bool AreValid(list&lt;string&gt; vals)
{
   foreach(string val in vals)
   {
       if(!condition1)
          ...
          return false;
       if(!condition2)
          ...
          return false;
   }

   return true;

} 


Note that you don't need the else keyword anymore.