strPb1.Length sarà sempre maggiore di 0 nel codice. Se non sono presenti virgole, Split(',') restituirà comunque un array contenente la stringa originale. Pertanto, l'impostazione iniziale del valore non è necessaria.
QueryString e split() sembrano andare bene. Forse il problema risiede altrove nel tuo codice o nella querystring che stai utilizzando. Se intendi aggiungere nuovamente le virgole nella tua stringa, perché rimuoverle?
Inoltre, un'alternativa all'utilizzo di un parametro delimitato da virgole consiste nel riutilizzare lo stesso parametro.www.test.com/?pm1=test1&pm1=test2&pm1=test3
string[] strPb1 = Request.QueryString.GetValues("pm1");
if(strPb1 != null && strPb1.Length > 0)
{
for(int i = 0; i != strPb1.Length; i++)
{
//Code here
}
}