使用 Linq 设置数据格式



我有一个这样的数据集:

2,Black
2,Blue
2,Red
1,Small
1,Medium

我需要将其转换为以下内容:

2_0
2_1
2_2
1_0
1_1

我目前拥有的 LINQ 查询使用第二个数字的索引,但是当从 2_ 更改为 1_ 时,它不会重置为 0。 我尝试过使用 GroupBy,但我无法获得所需的结果 - 有人可以帮忙吗?

IEnumerable<string> output = input
    .GroupBy(i => i.Num)
    .SelectMany(grp => grp.Select((item, idx) => string.Format("{0}_{1}", grp.Key, idx)));

您可以按数字分组并使用提供索引的Select()版本:

var result = data.GroupBy(x => x.Number,
                          (key, g) => g.Select((_, i) => string.Format("{0}_{1}", key, i)))
                 .SelectMany(x => x);

请注意,如果相同的数字不连续,则其行为可能与您预期的不同:例如,2, 2, 2, 1, 1, 2, 2 .

最新更新