Kevin,
IME dotNET can get dismayingly sluggish with larger resultsets- a natural consequence if the dataset has to be memory-bound rather than spanning to disk as necessary.
As a result, some see it as a virtue rather than a necessity to use a Stored Procedure and do such processing at the database. Some might even argue that your example should have used a SQL Server SP to pull these VFP records into a SQL Server table for querying, rather than creating a local recordset at all.
Regards
jR
"... They ne'er cared for us
yet: suffer us to famish, and their store-houses
crammed with grain; make edicts for usury, to
support usurers; repeal daily any wholesome act
established against the rich, and provide more
piercing statutes daily, to chain up and restrain
the poor. If the wars eat us not up, they will; and
there's all the love they bear us."
-- Shakespeare: Coriolanus, Act 1, scene 1