Looping a query bad practice? Good alternative? - C#