Av min erfarenhet är personsökning alltid snabbare om den lämnas till databasen. När allt kommer omkring är en databas byggd för att fråga och manipulera enorma mängder data.
Om du returnerar stora mängder data i .NET och "cachar" den i session kommer du snabbt att få slut på minne på din server.