0

次のクエリを動的に実行できるかどうか疑問に思っています。

        var perms = from a in matrix[0]
                    from b in matrix[1]
                    from c in matrix[2]
                    select new[] { a, b, c};

マトリックスは動的オブジェクトであり、マトリックスの次元に関係なく同じクエリを機能させたいと考えています。

ありがとう。

4

2 に答える 2

1

これは、アグリゲーターを使用して実行できます。

IEnumerable<IEnumerable<int>> l = new[] { Enumerable.Empty<int>() };
var perms = matrix.Aggregate( l, (accumulator, seq) =>
  from a in accumulator from s in seq select a.Concat( new[] { s } ) );
于 2012-04-28T21:39:53.383 に答える
0

行列を として宣言する必要がありdynamicますか? このコードはあなたが望むように機能すると思います:

 var matrix = new int[3][] { new int[] { 1 }, new int[] { 2, 2 }, new int[] { 3, 3, 3 } };
 var perms = from a in matrix[0]
             from b in matrix[1]
             from c in matrix[2]
             select new[] { a, b, c };
于 2012-04-28T20:58:38.803 に答える