With List<T>
you can also use its method TrueForAll
:
bool valid = list.TrueForAll(a => a.property1.Contains("xyz") && a.property2);
This will work on any version of .NET >= 2.0. You also can use LINQ as @Hassan suggested:
bool valid = list.All(a => a.property1.Contains("xyz") && a.property2);
That will work on .NET >= 3.5. Benefit of this option is ability to work with any enumerable source (i.e. if you'll change list to ICollection, or some other enumerable type).