Il codice che va a riempire la lista canzoni è una lambda, quindi non è detto che venga eseguita PRIMA del ciclo for. Anzi, trattandosi di un'interazione col DB è molto probabile che venga eseguita dopo.
O cambi approccio o dei prevedere un meccanismo di sincronizzazione tra la lambra e il codice che deve essere eseguito dopo.