se (!string.IsNullOrEmpty(buscaAlbum) ? f.Album.Titulo.Contains(buscaAlbum) : true )
--> se (!string.IsNullOrEmpty(buscaAlbum) ? f.Album.Titulo.Contains(buscaAlbum) ==> eu verifico se o parâmetro passado está contido no Título. Até aí ok
caso contrário --> : true A pergunta é: porque está devolvendo true e não false, pois a primeira condição já está satisfatória?
var query = from f in contexto.Faixas
where f.Album.Artista.Nome.Contains(buscaArtista)
&& (!string.IsNullOrEmpty(buscaAlbum) ? f.Album.Titulo.Contains(buscaAlbum) : true )
orderby f.Album.Titulo, f.Nome
select f;