vb.net - 在 VB.NET 中使用大数组

标签 vb.net linq arrays excel

我想从 Excel 中提取大量数据,对其进行操作然后将其放回。我发现最好的方法是将 Excel Range 中的数据提取到一个大数组中,更改数组上的内容并将其写回 Excel Range。

我现在正在使用 VB.NET 2008/2010 重写应用程序,并希望利用任何新功能。

目前我必须循环遍历数组的内容以查找具有特定值的元素;对大数组进行排序也很麻烦。我希望使用新功能,包括 LINQ 来操作数组中的数据。

有人对在大数组中过滤/查询、排序等数据的最简单方法有任何建议吗?另外,数组大小的合理限制是多少?

~非常感谢

最佳答案

虽然您有一个多管齐下的问题,但我选择回答有关使用 LINQ 操作数组的部分...

编辑 - 针对 2D 数组的 LINQ,VB.NET

System.Array(所有数组都从中派生)支持 .AsQueryable() 的扩展方法这意味着您可以直接使用 LINQ 处理 2D 数组,如下所示:

Option Infer On
Option Strict Off

Public Class DataProcessor

    'something like this came from Excel, maybe a Range
    Dim arrValues2D(,) As String = { _
        {"1", "2", "3"}, _
        {"100", "99", "98"}, _
        {"2", "3", "4"} _
    }

    Private Sub FindLargeNumbers()

        'LINQ against 2D array elements
        Dim query = From v In arrValues2D Where (Int32.Parse(v) > 50 And Int32.Parse(v) < 101) Select CStr(v)

        For Each thing As String In query
            'do stuff
            Console.Write(thing + ",")
        Next

    End Sub
End Class

最初的想法

(自上述解决方案以来几乎已被弃用)

你可以Implement IEnumerable(Of T) and IEnumerator(Of T) in Visual Basic “展平”您的 2D 数组(有效地一次返回一个值,就像它是一维数组一样)并使用 LINQ 对这些值执行操作。

根据数组元素的数据类型,为了写回它们,您可能需要将每个值包装在某些内容中,以便可以引用原始元素而不是其值的副本。

这只是一个总体计划,允许您针对 Excel 中已有的大型高效 2D 数组使用 LINQ 和“新功能”。

关于vb.net - 在 VB.NET 中使用大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2085785/

相关文章:

asp.net - .net 4.7 中的 tls 1.2 不工作

vb.net - 如何在 Visual Studio 中跨应用程序重新启动进行调试?

c# - 为什么在LINQ查询中调用方法时不能使用范围值的属性作为参数?

vb.net - 如何从一个列表中删除另一个列表中的所有项目?

arrays - 带有要排列的行的标量

c - 当条件满足时如何打破一维数组?

javascript - 查找数组/矩阵的总和和 max.min

vb.net - 获取突出显示的文本

Linq GroupBy 过滤器

.net - 如何从子类(在嵌套类中)获取父类中的值?