【发布时间】:2014-12-01 16:52:03
【问题描述】:
是的,我确实知道锯齿数组 [][] 和多维数组 [,] 之间的区别。
是的,我已经查找了重复项并找到了这些:
- How to use LINQ on a multidimensional array to 'unwind' the array?
- Convert 2 dimensional array
- c# linq return a multidimensional array from linq
其中最后一个包含完成这项工作的功能。但我的问题仍然是:有什么方法(无论多么扭曲或做作)来说服 LINQ 以多维数组的形式构造并返回结果(而不是锯齿状数组)?
这与问题并不真正相关,但这里导致的问题是那些看起来像是“为 LINQ 制作”的小工作之一,除了我需要调用的函数是用多维数组参数定义的.将答案生成为锯齿状数组的 LINQ 代码花了大约 5 分钟来编写,然后呢?我错过了什么,还是真的没有办法 LINQ 来完成这项工作?
我想我应该说:除了编写一大段代码以旧方式执行并将其嵌入为 lambda 或将其作为扩展方法调用。目前看来,LINQ 似乎既不能生成也不能使用多维数组,而我的问题的答案是否定的。
【问题讨论】:
-
我不确定你的目标是什么。如果您发布的最后一个链接的答案有效,那么为什么不简单地将其转换为扩展方法,以便您可以像
.Where(...).Select(...).ToRectangularArray()一样使用它呢?或者你想让from x in xs select x.y返回一个多维数组而不是IEnumerable? -
Linq 与 IEnumerables 一起使用。它的所有返回类型都是 IEnumerable 的某种风格。如果您想返回一个多维数组,那么我想您必须编写一个等效于
Enumerable.ToArray()的当前不存在的数组。
标签: c# .net arrays linq multidimensional-array