0

私は次のようなデータセットを持っています:

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

これを次のように変換する必要があります。

2_0
2_1
2_2
1_0
1_1

現在私が持っているLINQクエリは、2番目の数値のインデックスを使用していますが、2_から1_に変更しても0にリセットされません。GroupByを使用してみましたが、必要な結果が得られません。誰か助けてもらえますか?

4

2 に答える 2

3
IEnumerable<string> output = input
    .GroupBy(i => i.Num)
    .SelectMany(grp => grp.Select((item, idx) => string.Format("{0}_{1}", grp.Key, idx)));
于 2012-11-15T19:58:31.763 に答える
1

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

于 2012-11-15T19:54:49.767 に答える