动态生成查询?

时间:2012-04-28 20:27:37

标签: c# linq

我想知道我是否可以动态执行以下查询。

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

矩阵是一个动态对象,无论矩阵维度如何,我都希望使用相同的查询。

感谢。

2 个答案:

答案 0 :(得分: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 } ) );

答案 1 :(得分: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 };