0

コレクションがあります:
[ A { 'a' => '1', 'b' => ['1', '2']}
B { 'a' => '2', 'b' => [' 1','2','3']} ]

このコレクション内のアイテムを「複製」して次の結果を作成する関数を探しています:
[ A1 { 'a' => '1', 'b' => '1'}
A2 { 'a' => '1', 'b' => '2'}
B1 { 'a' => '2', 'b' => '1'}
B2 { 'a' = > '2', 'b' => '2'}
B3 { 'a' => '2', 'b' => '3'} ]

どうすればそのような結果を達成できますか?

4

1 に答える 1

1

クラスA / Bの定義についてはあまり明確ではありません。あなたのクラスは次のようになっていると思います:

class Data
{
    public int a;
    public int[] b;
}

そして、次のようなデータを準備します。

var A = new Data { a = 1, b = new[] { 1, 2, } };
var B = new Data { a = 2, b = new[] { 1, 2, 3 } };
List<Data> original = new List<Data> { A, B };

を使用.SelectManyしてデータを平坦化します。

var result = original.SelectMany(item => 
                          item.b.Select(x => 
                             new { a = item.a, b = x }))
                     .ToList();

コード内のいくつかの悪いプログラミング習慣 (パブリック フィールドなど) を無視して、最後の linq クエリのコーディング スタイルを自由に提案してください。

于 2012-04-16T08:51:41.667 に答える