Seit .NET 2.0 gibts auf den List- und Array-Klassen so praktische FindXY()-Methoden.

Diese Methoden erwarten alle einen Predicate<> - Parameter...

und so gehts:

List<MyType> lstT = new List<MyType>();
for (int i = 0; i < 100; i++)
{
lstT.Add(
new MyType(i.ToString(), i));
}

string searchExpr = "20";

lstT.Find(
delegate(MyType obj)
{
return searchExpr == obj.Test1;
});

Das ganze wurde hier mit anonymen Methoden gelöst - das muss natürlich nicht sein, haltet das ganze aber einfach.