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 回答