我想知道是否可以动态执行以下查询。
var perms = from a in matrix[0]
from b in matrix[1]
from c in matrix[2]
select new[] { a, b, c};
矩阵是一个动态对象,无论矩阵尺寸如何,我都希望有相同的查询工作。
谢谢。
您可以使用聚合器完成此操作:
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 } ) );
是否有必要将矩阵声明为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 };