我想从 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/