Tag: cartesian product

生成n-ary Cartesian产品示例

我发现Eric Lippert的post适合我遇到的一个特殊问题。 问题是我无法理解我应该如何使用2个以上的集合。 有 var collections = new List<List>(); foreach(var item in somequery) { collections.Add( new List { new MyType { Id = 1} .. n } ); } 如何在变量集合中应用笛卡尔积linq查询? 扩展方法是这样的: static IEnumerable<IEnumerable> CartesianProduct(this IEnumerable<IEnumerable> sequences) { IEnumerable<IEnumerable> emptyProduct = new[] { Enumerable.Empty()}; return sequences.Aggregate( emptyProduct, (accumulator, sequence) => from accseq in accumulator from item […]

笛卡尔积+ N x M动态arrays

我已经看了几个小时的解决方案,没有任何成功。 希望有人可以帮助我。 我有M个原始邮政编码的N项动态数组。 例如: 项目1:11001,54010,60621项目2:11001,60621项目3:60621 我想创建一个如下所示的新数组: 路线1:11001,11001,60621路线2:11001,60621,60621路线3:54010,11001,60621 等 – 直到6号公路。 建议? ———————-有没有办法在不使用Linq的情况下实现这一目标? VB.net和Linq不一起:)

在Linq(C#)中将多个不同大小的集合动态交叉连接在一起

我有一个未知数量的桶(集合),每个桶具有未知数量的实体 我需要生成所有实体的笛卡尔积,这样我最终得到一个具有ARRAYS实体的COLLECTION,并且在每个数组中,每个桶都有1个代表。 因此,如果我有5个桶(B1..B5),并且桶B1,B2各有1个项目,而桶B3,B4和B5各有4个,8个和10个项目,我将收集320个数组,每个数组将有5个项目。 这里唯一的麻烦问题是,在开发时,桶的大小和桶的数量都是未知的。 性能在这里并不是非常重要,因为大多数时候,我的桶只有1个实体,而且很少有时候我的桶会包含20-30个项目…而且我通常会有5个30桶 我想在某种程度上利用linq,但是当我试图想象这是如何工作的时候,我的大脑正在变得油腻