我想知道我是否可以动态执行以下查询。
var perms = from a in matrix[0]
from b in matrix[1]
from c in matrix[2]
select new[] { a, b, c};
矩阵是一个动态对象,无论矩阵维度如何,我都希望使用相同的查询。
感谢。
答案 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 };