strPb1.Length kommer alltid att vara större än 0 i din kod. Om det inte finns några kommatecken kommer Split(',') fortfarande att returnera en array som innehåller den ursprungliga strängen. Därför är din initiala inställning av värde inte nödvändig.
Själva QueryString och split() verkar vara bra. Kanske ligger problemet någon annanstans i din kod eller frågesträngen du använder. Om du ska lägga tillbaka kommatecken i din sträng, varför ta bort dem?
Ett alternativ till att använda en kommaavgränsad parameter är att återanvända samma parameter.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
}
}