So you want to GroupBy
page name and build sub-lists for every page? Then this should work:
List<List<string>> urlsPerName = list
.Select(u => new { Name = Path.GetFileNameWithoutExtension(u), Full = u })
.GroupBy(x => x.Name)
.Select(g => g.Select(x => x.Full).ToList())
.ToList();
Result, three lists with three strings each:
[0] "a.aspx?a=1" string
[1] "a.aspx?a=2" string
[2] "a.aspx?a=3" string
[0] "b.aspx?b=1" string
[1] "b.aspx?b=2" string
[2] "b.aspx?b=3" string
[0] "c.aspx?c=1" string
[1] "c.aspx?c=2" string
[2] "c.aspx?c=3" string