【问题标题】:Selecting a multi-dimensional array in LINQ [duplicate]在 LINQ 中选择多维数组
【发布时间】:2011-02-03 12:06:15
【问题描述】:

我有一个任务需要将 DataTable 转换为二维数组。只需遍历行和列就很容易做到这一点(请参见下面的示例)。

private static string[,] ToArray(DataTable table)
{
    var array = new string[table.Rows.Count,table.Columns.Count];

    for (int i = 0; i < table.Rows.Count; ++i)
        for (int j = 0; j < table.Columns.Count; ++j)
            array[i, j] = table.Rows[i][j].ToString();

    return array;
}

我真正想做的是在 LINQ 中使用 select 语句来生成二维数组。不幸的是,LINQ 中似乎无法选择多维数组。是的,我知道我可以使用 LINQ 来选择锯齿状数组,但这不是我想要的。

我的假设是否正确,或者有没有办法使用 LINQ 来选择多维数组?

【问题讨论】:

  • 你能做一个数组数组吗? (转换会更快)
  • 是的,我可以做一个锯齿状数组(数组的数组),但不幸的是,在这种情况下,这不是我调用的 api 所接受的。

标签: c# linq multidimensional-array


【解决方案1】:

我认为这是不可能的。我的理由是Select 和大多数其他 LINQ 函数要求它们处理的集合至少在某些 T 中实现 IEnumerable&lt;T&gt;

public static IEnumerable<TResult> Select<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TResult> selector
)

矩形数组没有为任何 T 实现 IEnumerable&lt;T&gt;,因此它不能是 Select 函数的返回值。

【讨论】:

  • 是的,使用 LINQ 获得锯齿状数组很简单,但真正的 2D 数组完全是另一回事。
猜你喜欢
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多