You could wrap it up in a method and just yield return the results that match your criteria
public IEnumerable<TestClass> GetTests(List<TestClass> tests)
{
foreach(var v in tests){
if(v.ModulePosition == 1 && v.TopBotData == 2)
yield return v;
}
}
And Then
List<TestClass> tcList = new List<TestClass>();
tcList.Add(new TestClass { ModulePosition = 1, TopBotData = 2, prop3 = 3 });
tcList.Add(new TestClass { ModulePosition = 1, TopBotData = 4, prop3 = 5 });
tcList.Add(new TestClass { ModulePosition = 1, TopBotData = 2, prop3 = 6 });
var results = new List<TestClass>(GetTests(tcList));
var count = results.Count;