-1

我的工作数据是字符串类型的列表:

    a.aspx?a=1
    a.aspx?a=2
    a.aspx?a=3
    b.aspx?b=1
    b.aspx?b=2
    b.aspx?b=3
    c.aspx?c=1
    c.aspx?c=2
    c.aspx?c=3

我想做的是:

  1. 取列表中的第一个值 (a.aspx?a=1)
  2. 获取页面名称(a.aspx)
  3. 将所有匹配的页面放入一个单独的集合中(a.aspx?a=1,2,3)
  4. 删除原始列表中与页面名称匹配的所有条目 (a.aspx)
  5. 重复1-4,这次第一个条目是b.aspx
  6. 依此类推,直到我为每个页面名称都有单独的集合

我可以做 1-3 好,但我不确定执行第 4 步和第 5 步的最佳方法,即从循环内动态创建集合或实现类似结果的其他替代方法。

有什么建议么?

4

1 回答 1

1

所以你想GroupBy为每个页面命名并建立子列表?那么这应该工作:

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();

结果,三个列表,每个列表包含三个字符串:

        [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
于 2013-11-11T16:08:23.907 回答